XAMPP下安装Moodle时,解决MYSQL升级以及页面重定向问题



这次xampp下安装moodle整整折磨了我差不多一天,直到凌晨3点钟才搞定。由于mysql版本的问题,中途才试图使用wampserver集成环境解决,但是由于本人电脑的问题,安装不成功,最后又回头使用xampp。

但是,本人感觉wamp可能解决起来比较方便,因为他的mysql版本号满足moodle的要求。前提是你可以安装成功。


moodle安装过程:
1.在安装之前首先在xampp的mysql命令行执行下面的数据库代码手动创建数据库(这样可以避免在检测安装环境的阶段出现一些错误)

CREATE DATABASE moodle DEFAULT CHARACTER SET UTF8 COLLATE utf8_unicode_ci;

2.刚开始几步基本没有问题,不会存在问题,填写该填写的东西


3.当我们到达安装环境的检测页面的可能会报错,我遇到的主要是php扩展库和mysql版本低的问题

       (1)扩展库的问题,我们可以根据提示在php.ini中查找对应的扩展,并且开启他

           注意:一种比较特殊的一个扩展--- opcache
           大家可以根据我的代码开启和补充:
               
[opcache]
zend_extension=php_opcache.dll                   --------额外添加
; Determines if Zend OPCache is enabled
opcache.enable=1                                        ---------开启

; Determines if Zend OPCache is enabled for the CLI version of PHP
opcache.enable_cli=1                                 ---------开启

; The OPcache shared memory storage size.
opcache.memory_consumption=528                                 ---------开启

; The amount of memory for interned strings in Mbytes.
opcache.interned_strings_buffer=8                                ---------开启

; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 100000 are allowed.
opcache.max_accelerated_files=10000                                ---------开启

; The maximum percentage of "wasted" memory until a restart is scheduled.
;opcache.max_wasted_percentage=5

; When this directive is enabled, the OPcache appends the current working
; directory to the script key, thus eliminating possible collisions between
; files with the same name (basename). Disabling the directive improves
; performance, but may break existing applications.
;opcache.use_cwd=1

; When disabled, you must reset the OPcache manually or restart the
; webserver for changes to the filesystem to take effect.
;opcache.validate_timestamps=1

; How often (in seconds) to check file timestamps for changes to the shared
; memory storage allocation. ("1" means validate once per second, but only
; once per request. "0" means always validate)
opcache.revalidate_freq=1                                ---------开启
这样就可以解决扩展之类的环境检查问题


(2)xampp的mysql版本低的问题(我们需要升级mysql)

         1.首先我们在mysql官网下载一个高于moodle要求的mysql版本
         2.下载下来,我们进行安装,大家都会
         3.安装完成后,找到mysql安装 目录
          XAMPP下安装Moodle时,解决MYSQL升级以及页面重定向问题_第1张图片

                  4.然后找到xampp的mysql安装目录
                     XAMPP下安装Moodle时,解决MYSQL升级以及页面重定向问题_第2张图片

             5.我们接下来进行升级操作,首先将xampp的mysql目录重新命名为mysql-old,并且新建一个mysql文件夹


            6.然后将你刚才安装的高版本mysql目录中的bin  lib   share  三个文件夹拷贝到新建的mysql文件中去


             7,然后再将mysql-old中的data文件夹也拷贝到mysql中去,并且将mysql-old/bin/下的my.ini也拷贝到mysql中对应
                     的文件夹bin的目录下


            8.这样mysql升级就完成了。环境检查就成功了  

           9,然后continue下一步。可能会出现空白页面,这时候不要着急,等个十几或者二十分钟就会有数据表创建的信息
               出来。(当出现空白的页面,观察上面网路圈没有转动的时候,刷新一下 就可以了。然后继续等)

          10,接下来出现一些信息设置页面,正常设置就可以了、
XAMPP下安装Moodle时,解决MYSQL升级以及页面重定向问题_第3张图片





******************************************出现重定向的问题**********************************************************
XAMPP下安装Moodle时,解决MYSQL升级以及页面重定向问题_第4张图片

解决办法:
 1产生问题的真正的原因 
  输入各类子栏目的链接如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所示。 
  

2解决方法 
  当尝试对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”。然后对平台进行操作时,数据库和缓存中会有新生成数据的写入 (我这里直接输入http://localhost根地址,因为按照他的也是重定向页面
  (3)此时再在index.php文件中恢复上述注释或删除的代码段。再次打开Moodle平台时,检测机制会顺利的通过,而不会出现因检测语句冗余而产生的页面重定向循环问题。如图6所示。 


 3 结论 
  Moodle的缓存检测和关键数据检测的方法是完善和优秀的。但是在首次安装后进入首页时,这些检测的判断语句过于复杂和冗余。可能会导致某些终端在安装时出现页面重定向循环问题。对于一般的用户,我们只能在不影响整个系统正常运行的前提下,适当的屏蔽掉一些判断代码,以使得安装能继续运行通过。该方法希望能为Moodle平台的使用者提供参考和借鉴。 

该方法:引自        http://www.92to.com/xuexi/2016/12-21/14802572.html



你可能感兴趣的:(php)