解决服务器重定向循环 解决服务器重定向循环 Moodle安装部署过程中重定向循环问题的解决方案

摘 要

  Moodle最新版本的安装包,在安装后会出现空白页及重定向循环的问题。国内外的网站上都有对该问题进行提问。本论文分析了Moodle官方网站及各大技术网站对该问题的解决方法,发现这些方法都无法解决上述问题。通过详细的研究,本文提出了一种新的解决该问题的方案。
  【关键词】Moodle安装部署 重定向循环 解决方案
  1 引言
  自2010年起,学院开展了全新的E-learning教学模式。通过数年的努力,将多门课程制作成网络教学课程,取得了很好的效果。Moodle因为其开源的代码和无任何授权所需要的费用,简单的使用和编辑界面,高度的灵活性,以及能高效的进行二次开发的可能性。
  2 安装过程中遇到的问题
  2015年底,我们决定将Moodle的版本进行升级为Moodle2.7。
  但是当环境架设完毕并进行新版本的安装到最后一个步骤后,浏览器长时间出现空白页面。重新输入“http://localhost/”后可进入XAMPP界面。但是输入“http://localhost/moodle”链接后,浏览器无法进入Moodle的页面进行访问。
  Google Chrome浏览器提示:“此网页包含重定向循环”,如图1所示。
  Mozilla Firefox浏览器提示:“此页面不能正确地重定向”,如图2所示。
  重新安装Moodle后仍然提示该错误。尝试Moodle2.8的版本安装后,同样也提示该错误。
  笔者就该问题向Moode中文站发送了邮件,Moodle中文站没有回复邮件。中国最大的开源技术型网站“开源中国社区”也有对上述问题的提问,无任何解决方法提供。
  Moodle官方网站上相同问题就更多了。Rich Werner的提问“New installation results in blank pages”为最新的提问,但是都没有解决方法。
  3 Moodle官网和其他渠道的解决方案和验证结果
  3.1 新浪播客的解决方案
  问题:进入密码设置的界面,文件名是/user/editadvanced.php,设置完后点确定,出现了空白页。再转到首页,就完全无法访问。
  解决:config.php文件中:$CFG->dataroot = 'D:\wamp\www\moodle24\moodledata24'。
  3.2 王大根老师发表的论文也提出了解决方案
  $CFG―>wwwroot =’http://localhost/
  $CFG―>dirroot =’D:\xampp\htdocs\moodle’;//本地文件路径
  $CFG―>dataroot =’D:\xampp\moodledata’;//学生上传作业文件夹地址
  3.3 Moodle官方网站提出的解决方案
  Check the dirroot variable in config.php. You must use complete, absolute pathnames
  (e.g.)$CFG->dirroot = "/var/www/moodle".
  上诉的方法都一致认为是在Config.php配置文件中,需要对“$CFG―>dirroot”字段进行属性的设置。
  设置“$CFG->dataroot”字段的属性值
  $CFG->dataroot = 'D:\xampp\moodledata';
  添加“$CFG->dirroot”字段,并设置属性值
  $CFG->dirroot = 'D:\xampp\htdocs\moodle';
  输入http://localhost/moodle/。结果仍旧是空白页面,并提示此页面不能正确地重定向。
  因此,上述方法所提出的添加完整的文件路径,并不能解决重定向循环的问题。
  4 解决方法探讨
  4.1 上述方法的问题
  笔者发现当输入“http://localhost/moodle”时,会自动跳转到“http://localhost/moodle/admin/index.php”页面。这说明moodle平台的首页面本应该是”moodle/index.php”页面,但是却跳转到了在moodle/admin/index.php页面。
  经过分析代码,发现moodle根目录下的index.php文件中有如下代码段。
  “redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php');”
  “$CFG->wwwroot”字段的属性为“http://localhost/moodle”
  “$CFG->admin”字段的属性为“admin”
  所以该代码段为链接到http://localhost/moodle/admin/index.php
  这说明,即使在配置文件Config.php中不加入“$CFG->dirroot”字段,Moodle也会按内外网的地址加子目录路径的方式来确定完整的文件路径。所以在Config.php文件中,添加完整的$CFG->dataroot路径,并不是这类问题的最终解决方案。如图3所示。
  4.2 产生问题的真正的原因
  输入各类子栏目的链接如login,user,course时发现并不是所有的页面都不能显示。但是当要进入注册、登录等关键性链接页面时,都会跳转到admim目录的index.php页面。所以,这个页面是出现问题的主要页面。   通过分析发现,在Moddle目录下的index.php文件中有如下条件判断语句:if ($hassiteconfig && moodle_needs_upgrading())。意思是当hassiteconfig字段有效并且检测到Moodle有更新时就自动跳转到admin目录的index.php文件进行执行。如图4所示。
  新跳转的index.php文件里要判断跳转过程中的cache缓存的值和sesskey表单值是否有效。如果全部的验证都确定为真时,设置cache的属性值为0,并且opcache缓存重启。否则设置cache的属性值为1。
  后续的条件判断语句检测到cache的属性值为1时,就会执行redirect(new moodle_url('/admin/index.php', array('cache' => 1)))语句。但是,页面并没有检查出cache的属性值,因此会重复的执行上诉语句,在两个index.php页面中进行死循环式的跳转。如图5所示。
  4.3 解决方法
解决服务器重定向循环 解决服务器重定向循环 Moodle安装部署过程中重定向循环问题的解决方案
  当尝试对index.php页面的条件跳转指令进行修改,能够解决上述问题。但是Moodle的条件跳转指令里包含着许多检测方式,修改后可能会对平台产生影响。所以,推荐一种较为实用的方式,admin目录下index.php文件里有如下代码段:
  if ( (isset($_GET['cache']) and $_GET['cache'] === '0')
  ......
  } else {$cache = 1;}
  这段代码为检测Moodle是否有缓存信息和关键数据保护检测。会根据不同的情况给cache字段赋值。
  (1)将这段代码注释或删除掉,使得moodle平台在第一次安装后进入该页面不去考虑cache值的设置,而直接进入平台的主页面。
  (2)在目录栏内输入“http://localhost/moodle/index.php?cache=1”。然后对平台进行操作时,数据库和缓存中会有新生成数据的写入。
  (3)此时再在index.php文件中恢复上述注释或删除的代码段。再次打开Moodle平台时,检测机制会顺利的通过,而不会出现因检测语句冗余而产生的页面重定向循环问题。如图6所示。
  5 结论
  Moodle的缓存检测和关键数据检测的方法是完善和优秀的。但是在首次安装后进入首页时,这些检测的判断语句过于复杂和冗余。可能会导致某些终端在安装时出现页面重定向循环问题。对于一般的用户,我们只能在不影响整个系统正常运行的前提下,适当的屏蔽掉一些判断代码,以使得安装能继续运行通过。该方法希望能为Moodle平台的使用者提供参考和借鉴。
  参考文献
  [1]Moodle official website,About Moolde[EB/OL].https://docs.moodle.org/28/en/About_Moodle.
  [2]开源中国社区,Moodle Q&A [EB/OL]. http://www.oschina.net/question/tag/moodle?show=time.
  [3]Moodle official website,Moodle Installation help[EB/OL].https://moodle.org/mod/forum/discuss.php?d=307819#p1238655.
  [4]新浪博客[EB/OL].http://blog.sina.com.cn/s/blog_4d6ab1180101kzcd.html.
  [5]王大根.基于Moodle的中职计算机网络教学平台的规划与探究[J].中国建设教育,2010(01)51-54.
  [6]Moodle official website,Moodle Installation FAQ[EB/OL].https://docs.moodle.org/28/en/Installation_FAQ# Why_are_all_my_pagesblank.3F.
  作者单位
  湖北工业大学 湖北省武汉市 430068
百度搜索“爱华网”,专业资料、生活学习,尽在爱华网!  

爱华网本文地址 » http://www.aihuau.com/a/364051/991511345916.html

更多阅读

xp系统停止服务怎么办最终解决方法 xp系统停止服务

  相信使用xp系统的用户还是非常普及的,可是微软公司做出了决定windowsxp要停止服务。这个决定对很多xp用户也许是非常残忍的,当然,微软停止xp服务也有他的原因吧。那么如果停止服务的话又该怎么办呢?我们就要更换系统吗?来看看豆豆

Internet信息服务找不到的解决办法 精 找不到internet时间

Internet信息服务找不到的解决办法 精——简介最近我的电脑也出现了Internet信息服务找不到的情况,在网络上查了很多方法都没一个正确的,后面通过下面的方法我成功了,故此我把这个经历也分享给大家,希望能够帮到您。控制面板里“->添加

PrintSpooler服务意外地终止的解决方法 win10 print spooler

问题:Win7 32位旗舰版近日出现网络打印机不能使用情况,其它电脑使用共享打印机正常。解决:1、通过测试发现只要点击打印,Print Spooler 服务就会停止,查看Windows日志错误事件提示如下:2、尝试启动Print Spooler服务可以运行,但一点击打印,

声明:《解决服务器重定向循环 解决服务器重定向循环 Moodle安装部署过程中重定向循环问题的解决方案》为网友错乱青春分享!如侵犯到您的合法权益请联系我们删除