安装FAQ

来自MoodleDocs
跳转至:导航、​搜索

在安装问题讨论区提问时需提供系统信息

每当在安装问题讨论区发表提问时,试着提供足够多的系统信息,如:

  • 服务器操作系统名称(版本也有的话更好)
  • PHP版本(如,PHP5.3.3)
  • 数据库类型及版本(如,MySQL5.5.18)
  • 浏览器及版本(如,火狐,IE8)
  • Moodle版本(如,2.7)
  • Moodle的安装类型?(全新安装/升级)
  • 附上Moodle的config.php文件(请移除密码)
  • 附上Phpinfo?

确保对所提问题提供了合理的描述(绝不能是像HELP!或紧急求助!)并且对做了什么或发生了什么提供完整的说明。复制并粘贴准确全面的错误信息。“什么都没有”不是错误症状,即使空白页面也是有意义的。

PHP——是否已经安装,使用的什么版本?

在Web站点新建一个名为info.php的新文件,包含下列代码,并从浏览器访问它:
<span style="font-weight: bold"><?PHP</span> <span style="color: #990000">phpinfo</span><span style="color: #009900">(</span><span style="color: #009900">)</span> <span style="font-weight: bold">?></span>
如上述页面什么都没显示,那么说明你的PHP没有安装成功或Web服务器没有配置好还不足以正常处理.php文件。参见安装文档获取如何下载PHP到你电脑上的更多信息。参见phpinfo页面获取此页内容的更多细节。

有人告诉我在安装Moodle2.x时需要用到PHP插件intl

从Zend而来的intl.dll文件是PHP5.2.8及以上版本的一部分。目的是为了改善PHP页面的国际化,Moodle2.x将其视为安装 进程的一部分。如果是在本机或网络主机上安装Moodle,那么可以从网络上下载最新版本的PHP或升级到最新版本。这时你必须注释掉所需的动态扩展,包 括php_intl.dll扩展。问题自然而然的解决了。如果把Moodle安装在虚拟主机上,那么需要联系虚拟主机服务商来做这些工作。还有一种替代方 案就是解压下载文件后把intl.dll文件复制并粘贴到php/ext文件夹下,intl.dll必须包含如下语句:
extension=php_intl.dll
在PHP配置文件php.ini里的动态扩展部分,也可以对错误等级进行设置:
intl.error_level = E_WARNING 
但这不是至关重要的。 如果是在Linux上进行安装,可以使用系统包管理器或指定的编译标志:
* Debian 5.0 (& Ubuntu) use: apt-get install php-intl or apt-get install php5-intl 
* CentOS 5.5 (& RedHat) you should (probably) be using php 5.3 from remi and then use: yum install php-intl
这 一技术适用于任何需要从Zend升级的动态扩展。随后你可能会想使用php/ext文件夹内的dll文件,可以通过如上的方法做到,小心点,你的版本可能 并不能充分利用扩展,很多新的扩展还会引起意想不到的不稳定性。最好的选择是按部就班的升级,大概每年一次升级PHP就好了。

在php.ini文件中真正需要取消注释的动态扩展有哪些?还有哪些也是需要改变的?

假设你已经完全获得了服务器的安装控制权,如果是虚拟主机则另当别论。在php.ini文件里如需对任意一行取消注释仅需删除代码前段的分号“;”。对于Moodle来说,仅需做出一些改变以确保必须的扩展可以使用。他们是:

资源限制
 memory_limit = 128M //所需的最大值,如若是虚拟主机则可能更少。 
数据处理
 post_max_size = 512M //此值允许的最大帖子占用达到512MB,但最好根据你的需求及环境来设置它。
路径和目录
 doc_root ="driveletter:\path\to\server\active\web\directory" (e.g. d:\Apache\htdocs or e:\iis\wwwroot )
及
extension_dir = "driveletter:\path\to\php\ext" (e.g. d:\php\ext or e:\iis\php\ext)
文件上传
 upload_max_filesize = 512M (与post_max_size不同,其为设置文件上传大小)
动态扩展 (只在Windows上需要)
PHP 5.3.x
extension=php_curl.dll
 extension=php_gd2.dll
 extension=php_gettext.dll
 extension=php_intl.dll
 extension=php_imap.dll
 extension=php_ldap.dll
 extension=php_mbstring.dll
 extension=php_exif.dll  ; Must be after mbstring as it depends on it
 extension=php_mysql.dll
 extension=php_mysqli.dll
 extension=php_openssl.dll
 extension=php_pdo_mssql.dll
 extension=php_pdo_mysql.dll
 extension=php_soap.dll
 extension=php_sockets.dll
 extension=php_sqlite.dll
 extension=php_xmlrpc.dll
 extension=php_zip.dll

上述编辑的动态扩展可以覆盖一系列的选择,当然也还有其他可能,但所列之项都是最常用到的。除非需求较为特殊,没有理由背离这些设置,如若真的需要其他设置,确保你知道改变他们的后果。这些扩展可以使Moodle成功安装并运行其他PHP程序。

其中一个明显的例子就是Oracle扩展没有在这显示,但Oracle仍可作为Moodle的数据库使用。另外一个经常另自己惹祸上身的是使用 “Magic quotes”。真的应该关闭Magic quotes,他们只是为了在初期介绍PHP的使用以使缺乏经验的人练习编辑脚本(阅读能力差,以次充好或狡猾的人)。如若编辑的脚本质量仍然很差,那么 他们真的应该注意他们自己并删除他们的脚本了。

Moodle的配置文件是什么?放在哪里?

存放在Moodle文件夹下的config.php文件存储了Moodle的配置设置选项。这个文件是在安装过程中创建的。如若出现问题或安装过程不能创建文件,可以试着通过配置文件文档手动创建。

下载Moodle之前的版本

旧版本的Moodle也可以下载,当然不是在标准Moodle下载页面里。旧版的位置在[ http://download.moodle.org/stable[版本号] (参见下面的链接。)

2.0 Versions 1.9 Versions 1.8 Versions
1.7 Versions 1.6 Versions 1.5 Versions
1.4 Versions 1.3 Versions  

使用wget、lynx或curl访问[ http://download.moodle.org/stable[版本号]即可下载旧版。

例如:为下载Moodle 1.5,访问http://download.moodle.org/stable15。点开之后会看到展示文件的目录结构。根据所需按平常一样下载就可以了——如若是需要1.5版的最新升级版,则需将页面滚动到列表最后面并下载“最新版”的文件。

[version_number.zip http://download.moodle.org/windows/MoodleWindowsInstaller-latest-[versio...]
  • Mac软件包: 在为Mac设计的Moodle包里不能下载的版本可以通过以下链接中的其中一个(取决于需要Intel包还是PPC包)进行下载:
[version_number.dmg http://download.moodle.org/macosx/Moodle4Mac-Intel-[version_number].dmg]
[version_number http://download.moodle.org/macosx/Moodle4Mac-PPC-[version_number}.dmg

如何启用或检查PHP的错误日志?

PHP可以设置为使用多种不同的方式记录错误:其中一个牵扯到了php.ini文件,另一个则涉及到ini_set命令。详情参见PHP错误日志文档。

“找不到顶级课程”

尝试着完成安装Moodle时如若出现这样的提示则很可能意味着安装没有完成。完整的安装过程会在完成之前要求填写管理员资料并为站点命名。检查错 误日志。删除数据库如何重新开始安装。如果之前使用的是基于Web的安装方式,那么这次就试一下命令行的安装方式。还需要再一次确定的是你的电脑是否满足 安装Moodle的最低需求?

邮件副本不能从论坛中发出

如若让Moodle可以从如论坛、任务等活动中自动发送邮件则必须对Cron进行合理的设置。这一过程同样扮演着清理任务,如删除老旧的未确认的用户,未注册过的学生等等。请参阅Cron说明

提示:

  • 试着采用默认设置:设置>网站管理>插件>消息输出>邮件。一般都会正常工作。除非……
  • 如若在Windows服务器上必须在上述设置页面提供SMTP服务器地址(不像Unix,Windows没有内置的邮件服务器)。
  • 确保设置>网站管理>插件>消息输出>邮件里的allowuseremailcharset参数是“No”,除非你真的自己在干嘛。把这个参数设为“Yes”在很多Moodle版本中会引起问题。
  • 检查防火墙或询问网络管理员。很多邮件服务器很大程度上被锁定了,需要足够的权限通过他们来发送邮件。

我不能登录了——我卡在了登录页面

如果看到像这样的提示“你的会话已过期,请重新登录”或“检测到服务器错误影响了你的登录会话,请重新登录或重启浏览器后再试”,这些有可能会使你卡在登录界面,不能正常登录。

下面是致使不能登录可能的原因及应采取的措施(排序不分先后):

  • 首先检查主管理员账号(应该是手工账号)是否有问题。如若用户使用的是外部验证方法(如,LDAP),那么有可能是这个问题。隔离故障并在进一步修复错误之前确保这真的是所要登录的Moodle站点。
  • 检查硬盘是不是没有剩余空间了,如若是虚拟主机则需检查是不是没有了剩余硬盘空间配额了。没有可用空间则会阻止会话的创建,任何人都不能正常登录。
  • 仔细检查数据目录“moodledata”的权限。Web服务器需要可写权限以编辑数据目录内的会话子目录。
  • 自己的电脑(非Moodle服务器)防火墙有可能会从浏览器剥离引荐信息(stripping referrer information from the browser)。详情参见修复Norton防火墙产品的说明文档。
  • 试着删除数据目录里的会话文件夹(当前登录到系统的任何用户都会被踢下线)。
  • 试着删除电脑上的缓存或(并)使用其他浏览器或换台电脑再试一下。
  • 设置>网站管理>服务器>会话处理页面试着对“缓存前置”设置前缀。当然也可以通过config.php内的$CFG->sessioncookie='something'进行设置参数前缀。如果是在同一浏览器访问数个Moodle站点是非常有用的。
  • 确保没有移除或改变config.php内的密码Salt值。如果创建密码时使用了SALT,那么config.php内的正确SALT是确保密码可以继续正常工作的前提。如果是在执行升级后却忘了传送SALT值时可以通过重建config.php以轻松地解决这个问题。
  • 在Moodle文件夹(或父文件夹)内有没有名为.htaccess的文件。如果有的话,是否是那儿的内容出问题了(奇怪的重定向,访问限制等等)?
  • 检查数据库表mdl_config的mnet_localhost_id值。正常的话应该是“1”,但是必须与记录用户表mdl_user的mnet_hostid相匹配以使用户是被认可的。在对站点进行升级或迁移时有可能会被不合逻辑地变更。
  • 检查config.php文件——应该在代码最后面还有任何空格/新行。
  • 最后还需要确认的是用户名或密码是正确的吧。

如果仍然不能登录,参见不能登录文档。当然也可以试着改一下管理员的密码。假装你已经遗忘了管理员的密码——参见管理FAQ

点击登录之后登录链接没有任何改变。或我登录进去之后可以随意浏览

确保config.php内的$CFG->wwwroot设置与想要登录的站点URL是一致的。

上传的文件给出“文件没找到”的提示

例如:没有找到:访问的URL/moodle/file.php/2/myfile.jpg没有在服务器上找到。

Web服务器需要配置成允许脚本名称后的部分URL可以直接访问脚本。Apache 1是启用的,而Apache 2是禁用的。可以通过添加如下代码到httpd.conf文件或本地服务器的.htacess文件(参见安装Moodle获取更多细节):
'''AcceptPathInfo''' on
注意,此方法仅适用于Apache 2.x以上版本。

IIS 7服务器需要其他特殊的配置,IIS 6则不支持。参见IIS文档获取更多细节。。

如若不能正常配置,那么也可以使用其他的替代方案。主要的缺点就是SCORM课程包不能用了,一些Adobe Flash和Java小程序也不能用了。

为使用这种替代方法,需要改变斜线参数slasharguments)的值方可使用。Moodle 1.7以下的版本需要在管理>配置>参数这设置。对于之后的版本,则需要在网站管理>服务器>HTTP进行设置。设置完成之后,现在就可以上传文件了。

另请参阅

为什么所有的页面都是空白的?

检查config.php内的dirroot值。必须使用完整的、绝对路径名,如:
<span style="color: #000088">$CFG</span><span style="color: #339933">-></span><span style="color: #004000">dirroot</span> <span style="color: #339933">=</span> <span style="color: #0000ff">"/var/www/moodle"</span><span style="color: #339933">;</span>
另一个导致这种问题的原因是PHP没有配置好以支持MySQL(或任何其他所用数据库)。若是在RedHat或OpenBSD上安装常会出现这种问题。在这种情况下,通常会产生错误,但又因为系统是默认不显示错误的,致使浏览器上的所有页面都是空白的。参见如何启用并检查PHP错误日志以启用PHP错误显示。 为了查看是否是数据库导致的问题,可以在config.php文件里的第二行插入如下代码:
<span style="color: #990000">phpinfo</span><span style="color: #009900">(</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
然后刷新页面。仔细检查输出内容以查看所选数据库是否被支持。如果不支持所选数据库的话,寻找丢失了什么文件吧。

为什么个别页面是空白的或不完整的?

  • 检查Web服务器日志文件!!
如果个别页面是空白的或不完整(如不显示页面底部(footer)),在做任何事之前请先打开调试模式检查PHP错误日志。在确定了PHP错误记录工作是正常运行的之后,重现这个错误。然后立即检查日志文件最后的一部分。希望可以在文件末尾部分找到PHP的错误信息。这样或许可以直接解决问题,或至少更为容易得在讨论区诊断问题。
  • 如果你正在对Moodle进行版本升级,检查一下旧版本有没有安装非标准的版块或模块。如果有的话,通过管理设置界面移除任何非标准的版块或模块,然后重启安装进程。然而,还需要确定的是,课程所必须的插件不能删除,必须包含在内。在编辑模式打开的情况下此种问题尤为常见。
  • 如若不能看到任何版块,打开编辑模式并移除此页新添加的任何版块,然后刷新该页面。
  • 选择语言之后可能会立即看到这个错误。安装过程的这一阶段,Moodle需要连接网络以下载语言包,所以需要通过浏览器检查电脑是否可以访问网络。还需要检查的是PHP设置是否满足Moodle需求页面所提要求。

另请参阅:

设置数据库表时安装停滞

有时在设置数据库表时安装会被挂起,这时浏览器页面只会显示一半,而其他输出内容都被移除了。或许可以看到截取MySQL的语句或看到“继续滚动”的链接但是看不到“继续”的按钮。

获取更多解决方案请参见意想不到的安装停滞文档,其中涉及到的有:

  • 检查MySQL限额
  • 检查.htacess文件
  • 代码自定义问题
  • 检查内存限制
  • 逐步升级
  • 修复fopen函数

为什么不能给我的资料上传新图片?

如果你不能在用户资料页面上看到可以让你上传图片的地方,那么通常可能是如下原因之一:

  • 你正在使用的角色与之相关联的权限不允许其更改用户资料图。
  • 没有安装GD或安装了却没启用。确保GD在PHP安装过程中已经安装。可以通过访问网站管理>服务器>PHP信息并搜寻GD版本设置以确认GD安装和启用的信息。每次访问这个页面时,设置都是自动选择的。如果GD版本是1或者2那么一切都将正常。保存配置页然后访问用户资料页。
  • GD已经安装了,但从某种意义上来说却是损坏的。例如,参见配置文件出现空行或空格的讨论

GD是一个可以处理图像的知识库。例如,系统一切正常的时候,上传一个图像后,GD对其进行压缩并产生2个缩略图,一个是100x100像素的,另一个是35x35像素的。

如若Moodle认为GD没有安装,那么就需要安装GD库

  • Unix上需要按照如下代码以对PHP进行重编译:
    • ./configure --with-apxs=/usr/local/apache/bin/apxs --with-xml --with-gd

--with-jpeg-dir=/usr/local --with-png-dir=/usr --with-ttf --enable-gd-native-ttf --enable-magic-quotes --with-mysql --enable-sockets --enable-track-vars

--enable-versioning --with-zlib
  • Windows上通常只需编辑php.ini文件以打开扩展即可使用GD。移除扩展php_gd2.dll前的分号即可——首先需要确认这个文件 缺失存在于PHP扩展文件夹内(在php.ini文件里搜索扩展目录(extension_dir)以判断其在硬盘什么位置)。应该可以找到如下代码:
    • extension=php_gd2.dll
Windows用户可通过安装说明文档获取更多帮助。
  • (如果需要的话)记得重启浏览器,对PHP配置作出任何改变之后重新访问配置页面使得可以使用正确的GD版本。

另请参阅:访问使用Moodle论坛中讨论资料图片的帖子以获取额外信息。

为什么我的Moodle不能正确地显示日期和时间?

每一种语言都需要特殊的语言代码(通常称为locale代码)以使日期可以正确地显示。语言包含有默认的标准代码,但是有时在Windows服务器上不能正常运行。

可以在如下2个页面找到Windows用的locale代码:语言代码国家/地区代码(如,“esp_esp”代表西班牙)

新的locale代码可以通过管理>配置>参数页面进行输入,如果输入新的语言代码则会覆盖掉当前选择的语言包。

如何卸载Moodle?

虚拟主机提供商/手动安装:如果Moodle是手动安装或安装在虚拟主机上可以根据如下步骤:

  • 使用mysql命令行删除数据库(或使用mysql客户端删除数据库,如,phpmyadmin):
sql>DROP DATABASE moodle;
上述删除数据库的例句中用你安装Moodle时创建的数据库名称代替"moodle"。
  • 删除数据目录moodledata。如果你或是你的用户上传过资料的话,需要在删除前备份
  • 删除Moodle目录本身。这将会删除掉所有的PHP脚本文件。

Windows上通过XAMPP安装:如果在Windows上安装时是用的XAMPP软件包,根据以下步骤卸载Moodle:

  • 打开cmd.exe,指向安装文件的目录:
server/mysql/bin
  • 输入如下命令,用你的数据库用户名代替USERNAME(默认是“root”),用你的数据库名代替DATABASE(默认是“moodle”):
mysqladmin.exe -u USERNAME -p drop DATABASE
  • 根据提示输入数据库密码(默认为“”【空】)。
  • 输入“y”以确认删除数据库。
  • 删除数据目录moodledata。如果你或是你的用户上传过资料的话,需要在删除前备份
  • 删除Moodle目录本身。这将会删除掉所有的PHP脚本文件。

迁移Moodle到一个新的站点或服务器

迁移Moodle意味着必须把当前的安装程序移动到另一个服务器,IP地址或DNS条目也有可能需要变更。变更IP需要将config.php文件 内的$CFG->wwwroot值变更为新服务器的地址。另一个还必须要变更的存储在数据库备份文件内绝对链接(在新服务器上恢复文件之前进行), 可以使用admin/replace.php脚本进行变更,或者使用文本编辑器或带有“搜索与替换”的工具,如,sed。详情参见迁移Moodle文档。

安装完成之后可以在服务器正常显示,为什么换台机器,格式或图片就不见了?

安装说明文档里,“webroot”的建议设置是“localhost”。如果你只是想在本地做一些测试的话,这完全没问题。如若不是这样的话,你还想让Moodle可以从局域网内的另一台电脑访问或从网络上访问,还需要作出一些改变:

  • 本地测试的话,webroot设置为“localhost”是没问题的(config.php文件内的$CFG->wwwroot)。
  • 如果想让局域网(LAN)内其他电脑访问Moodle,那么web root就必须得使用主机的私有IP地址(如,192.168.1.2/moodle),或使用主机的网络名称 (如,network_name_of_serving_machine/moodle)。根据局域网设置,最好是把web root设置为主机电脑的网络名称而不是时刻都在发生变化的(私有)IP地址。如果你不想使用网络名称,那么可告诉你的网管为主机申请一个永久的IP地 址。
  • 最后,如果需要在互联网上进行测试安装成功,那么web root必须要使用域名或永久(公开)的“IP/moodle”地址。如何同时处理这两种类型的访问,参见地址伪装

如何变更最大上传文件大小?

有多处地方可以变更最大文件上传大小。第一个地方是查看管理员版块——安全>网站策略,然后查找“最大上传文件大小”。旧版本中称其为“maxbyte”参数(在管理>参数内)。教师可以通过设置课程管理版块设置最大文件大小。

如若上述方法不能提供足够大的数值,那么就需要从服务器层面来变更它了。通常是在php.ini文件里(访问网站管理>服务器>PHP信息然后查验设置的位置)。查找upload_max_filesizepost_max_size,同时设置他们到所需的大小(如,64MB)。设置完成后需要重启Web服务器以使变更生效——如,Linux——/etc/init.d/apache2 force-reload。查验文档下步该怎么做或直接重启服务器即可。

更多帮助信息请参见:

Moodle声称处理PHP浮点数时不兼容

这种问题的征状是指在安装或升级Moodle时发生的,得到消息“处理PHP浮点数时检测到意外的问题”。

此论坛版块[https://tracker.moodle.org/browse/MDL-18253 MDL-18253]有此问题更多信息。简而言之,这种问题不会发生,如若遇到这种问题,可以发帖求助,发帖时请附上准确的PHP版本、系统等信息。这样就可以帮助我们找出解决此问题的方法。

安装最新版的PHP也许可以解决此类问题。如果是从源代码编译PHP,改变编译选项或许可行。然而,我们确实不知道出现这种问题的根本原因。如若你的方法有效,也请转告给我们。

更新:我们猜测引起问题的原因有可能是php.ini文件内精度(precision)的设置问题。安装PHP后,此值默认为14。至少有一台出现此问题的服务器已经将此值改为更小。所以,如若遇到这个问题,试着把如下代码——ini_set('precision', 14);——添加到config.php,如果成功的话,请在[https://tracker.moodle.org/browse/MDL-18253 MDL-18253]里汇报。

升级Moodle时,Moodle认为MySQL不是UTF8编码,但我可以确认数据库是UTF8编码

MySQL的UTF8检测已经在Moodle2.5就修复了,一些错误的数据库配置之前以不兼容报告过了。

需要注意的是仅仅转换数据库内的字符集和排序规则是不够的,需要对每个数据库表中的文本列进行修复!

进行下一步之前需要确保已经理解了字符编码(文本如何存储的)与排序规则(比较文本字符串的规则)的不同。排序规则不会引起这种错误,但他们本身会有一堆问题。

参见转换MySQL到UTF8

如何在没有重复基础代码的情况下运行多个Moodle实例?

参见Martin Langhoff所写详尽描述的帖子

什么是FreeTDS,如何在安装时使用它?

FreeTDS是 开源的表格式数据流实施方法,用于Microsoft SQL Server和Sybase数据库。不幸的是,Microsoft服务器通常不接受TDS 5.0的连接。FreeTDS允许Unix/Linux的应用程序与其他数据库产品会话,使其可以成功地在不同系统之间导入、导出数据。

如何安装插件?

请参阅安装插件文档。

由于插件概览页面的插件启用图标不可点击致使不能启用插件

插件概览页面内的眼睛“睁开”或“闭上”的图标仅指这个插件是启用的还是禁用的。不能通过这个页面进行编辑。如需启用插件,应该访问管理插件类型的页面,如设置>网站管理>插件>库>管理库设置>网站管理>插件>活动模块>管理活动

另请参阅

在共享的虚拟主机上安装Moodle: