这次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安装
目录
4.然后找到xampp的mysql安装目录
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,接下来出现一些信息设置页面,正常设置就可以了、
******************************************出现重定向的问题**********************************************************
解决办法:
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