这个文档包括了一些安装Moodle的人经常会遇到的问题。如果您跟随 安装指导 的说明进行安装但是仍然遇到了问题, 那么或许这份文档能够提供帮助。
如果您在这里没有找到您期望的答案,尝试moodle.org上的 Using Moodle 课程。首先在论坛中使用关键字检索一下,或许您的问题已经有人讨论过了。 如果您不能找到相关问题,您可以将您的问题发布到合适的论坛中 --通常会有人能帮助您。
如果您尝试了很多的方法也没有解决您的问题,同时您的系统运行在防火墙保护下, 较明智的做法是尝试重新配置您的防火墙,确保它没有阻止Moodle需要的功能和通讯端口。 防火墙很少引发Moodle的问题,但偶尔由于防火墙设置不当也会引发功能缺失的问题。
点击下面的链接定位到您需要的问题答案:
只要我试图访问或查看一个上传文件,我得到一个 "File not Found" 的错误
页面上显示致命的错误,例如: call to undefined function: get_string()
为何我一直获得 "头部已经发送 (headers already sent)"的错误?
我一直获得这个错误: Failed opening required '/web/moodle/lib/setup.php'
我添加的任何文本只要包含单引号(') 或双引号 (") 就会引发错误或被转换为包含斜线(/)
当我进入管理页面时,我被告知要保持 "dirroot" 空白!
例如: Not Found: The requested URL /moodle/file.php/2/myfile.jpg was not found on this server.
您的web服务器需要被配置为允许URL作为脚本名称的一部分传递为脚本。 这在Apache 1中通常默认是允许的,但在Apache 2中通常默认是不允许的。 要设置该项为允许,添加这一行到您的httpd.conf或本地目录中的.htaccess文件里(详情请浏览 安装文档 ) :
AcceptPathInfo on
注意, 这个配置仅对 Apache 版本 2.x 有效.
如果您没有使用 Apache 2 并且您还是遇到了这个问题,您可以配置 Moodle 使用一个选择性的方法。 缺点是会稍有些性能损失,并且您不能在HTML资源中使用相对链接。
要配置这个可选的方法: 作为管理员登录,进入到“设置 - 变量”,更改 "slasharguments" 参数,使用第一项。 您现在应该可以访问您的上传文档了。
在一个web站点目录下,创建一个叫"info.php"的文件,在其中包含下面的文本,在浏览器访问该文件:
<?PHP phpinfo() ?>
如果返回一个空白页,那么说明PHP没有安装。请查看安装文档,其中包含了那里可以下载PHP的信息。
检查 "config.php"中的"dirroot"变量。您必须使用完全的绝对路径, 例如:
$CFG->dirroot = "d:\inetpub\sites\www.yoursite.com\web\moodle";
Redhat Linux 平台请参照: Redhat Linux
如果您看到这样的错误信息:
Parse error: parse error, unexpected T_VARIABLE in c:\program
files\easyphp\www\moodle\config.php on line 94
Fatal error: Call to undefined function: get_string() in c:\program files\easyphp\www\moodle\mod\resource\lib.php
on line 11
请检查您是否在config.php中保留了一个半括号或引号 (在94行之前)。
另一个可能的原因是您使用了像Word这样的文本编辑程序打开"config.php", 并将它保存为一个HTML文件,而不是一个适当的文本文件。
如果您看到这样的错误信息:
Warning: Cannot add header information - headers already sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/lib/moodlelib.php on line 1322
Warning: Cannot add header information - headers already sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/lib/moodlelib.php on line 1323
Warning: Cannot add header information - headers already sent by (output started at /webs/moodle/config.php:87) in /webs/moodle/login/index.php on line 54
在您的"config.php"中,在最后的?>之外还有空行或空格。 一些文本编辑器会添加这些空格或空行 - 例如:Windows的写字板 - 所以您必须使用一个其他的编辑工具来完全移除这些空格和空行。
在您的"config.php"中,您配置用于"dirroot"变量的值 必须是从您的服务器硬盘根目录开始的完全路径 。
有时候是由于人们不恰当的使用了从他们主目录开始的路径, 或者使用了从Web服务器根目录开始的相对路径。
这个单引号(')问题是由于不恰当的 "magic quotes" 设置。 Moodle 需要下面的设置 ( 这通常是默认设置):
magic_quotes_gpc = On
magic_quotes_runtime = Off
请检查安装文档中的 Web服务器配置 部分了解详情。
如果您:
Warning: session_start() [function.session-start]: open(/tmp\sess_d40f380d37d431fc1516e9a895ad9ce0, O_RDWR) failed: No such file or directory (2) in G:\web\moodle\lib\setup.php on line 123
Warning: session_start() [function.session-start]: open(/tmp\sess_d40f380d37d431fc1516e9a895ad9ce0, O_RDWR) failed: No such file or directory (2) in G:\web\moodle\lib\setup.php on line 123
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at G:\web\moodle\lib\setup.php:1) in G:\web\moodle\lib\setup.php on line 123
... 这些都是由于PHP不能保存 "session" 文件到您的硬盘上 (在一个叫"/tmp"的目录中)。 通常是由于您没有一个叫做"/tmp"的目录在您的计算机上。 经常是由于Windows安装所引起的问题。
解决的方法是在PHP的设置中,将这个路径指向一个真实的路径。 编辑您的"php.ini"文件,修改变量:
session.save_path = C:\temp
或者修改 moodle 主目录下的 ".htaccess" 文件:
php_value session.save_path "/home/moodle/sessions"
如果您能看到这样像 Moodle 1.0.9 的错误信息:
请修正 "config.php" 的设置:
现在是: $CFG->dirroot = "/home/users/fred/public_html/moodle"; 但应该更改为: $CFG->dirroot = ""; |
那么您可能遇到了一个在一些服务器上发生的小缺陷。这个问题是由于错误检测机制引起的,而不是由于您的路径设置。 要修正这个问题,查找 "admin/index.php" 中的 (66行):
if ($dirroot != $CFG->dirroot) {
把它修改为:
if (!empty($dirroot) and $dirroot != $CFG->dirroot) {
确保配置文件中 "$CFG->wwwroot" 的链接地址设置跟您用来访问站点的URL一致。
假设您使用 Apache,那么您可能在 "config.php" 中设置 "$CFG->wwwroot" 使用了不同于您访问该站点的URL。 同时也请关闭管理设置中的 "secureforms" 选项。
这是一个在Moodle 1.0.9之前一直存在的缺陷,现在已经在主要的代码和版本1.1中得到修复。
这个缺陷不会影响到所有人,它只影响那些安装 Moodle 并且在浏览器中有来自相同站点的 其他程序设置的cookie,叫做 "user", "admin", 或 "teacher"。
快速修复的方法包括在安装前清除浏览器的所有cookie,使用一个不同的浏览器,或修改 "moodle/admin/user.php" 文件,在靠近顶部的位置插入这些行:
unset($user);
unset($admin);
unset($teacher);
做完这些操作后,最好删除您数据库中的所有表格, 并且从零开始重新安装。
通常引起这个问题的原因是您自己的计算机 (而不是您的 Moodle 服务器) 的防火墙从您的浏览器中剥离了HTTP Referrer信息。 这里有 一些修正这个问题的指导 Norton firewall products。
服务器的管理员也可以为所有用户修正这个问题, 修改 Moodle 配置页面,更改变量 "secureforms" 为 "No"。
另一个可能导致这个问题的原因是服务器上的session没有被正确的配置。 您可以调用脚本: http://yourserver/moodle/lib/session-test.php 测试服务器上的session配置。
有两个主要的部分需要您进行备份:数据库和上传的文件。 Moodle自己的脚本反而不重要,因为您总是可以下载最新的拷贝。
有很多备份的途径。这里给出一个在Unix系统在备份数据库的范例代码 (您也可以利用cron 任务来让它每天都运行)
cd /my/backup/directory
mv moodle-database.sql.gz moodle-database-old.sql.gz
mysqldump -h example.com -u myusername --password=mypassword -C -Q -e -a mydatabasename > moodle-database.sql
gzip moodle-database.sql
对于这些文件,您也可以使用 rsync 有规律的拷贝改变的文件到另一台主机:
rsync -auvtz --delete -e ssh mysshusername@example.com:/my/server/directory /my/backup/directory/
每个语言都需要一个指定的语言代码 (叫做 本地代码 ) ,才能允许日期被正确地显示。语言包中包含了缺省的标准语言代码, 但有时它们不能在 Windows 服务器上工作。
您可以在这两个页面中找到Windows所用的正确的本地代码 : Language codes 和 Country/region codes.(举例来说:西班牙语是 "esp_esp" )
新的本地代码能被输入从 管理 -> 配置 -> 变量 页, 他们将覆盖当前选择的语言包。
您 必须 适当地设置 cron 任务如果您想让 Moodle 自动的从论坛、作业等中发送出邮件。 This same 这个任务同时也运行一系列的清除任务,例如:删除过期未确认的用户, 未登入的旧学生等等。
基本上,您需要设置一个进程来有规律的调用脚本 http://yoursite/admin/cron.php。 请参照 安装文档中关于 cron 的章节.
提示: 尝试使用 Moodle 变量页面的缺省设置。 保持 "smtphost" 为空。 这对于大多数用户来说都是可接受的。
提交一个新的常见问题 (FAQ) (请包括问题答案!)
感谢 John Eyre 帮助维护这份 常见问题列表。
Version: $Id: faq.html,v 1.3 2008/05/08 17:06:29 liling Exp $