常见问题解答(FAQ)

这个文档包括了一些安装Moodle的人经常会遇到的问题。如果您跟随 安装指导 的说明进行安装但是仍然遇到了问题, 那么或许这份文档能够提供帮助。

如果您在这里没有找到您期望的答案,尝试moodle.org上的 Using Moodle 课程。首先在论坛中使用关键字检索一下,或许您的问题已经有人讨论过了。 如果您不能找到相关问题,您可以将您的问题发布到合适的论坛中 --通常会有人能帮助您。

如果您尝试了很多的方法也没有解决您的问题,同时您的系统运行在防火墙保护下, 较明智的做法是尝试重新配置您的防火墙,确保它没有阻止Moodle需要的功能和通讯端口。 防火墙很少引发Moodle的问题,但偶尔由于防火墙设置不当也会引发功能缺失的问题。

点击下面的链接定位到您需要的问题答案:

只要我试图访问或查看一个上传文件,我得到一个 "File not Found" 的错误

例如: 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" 参数,使用第一项。 您现在应该可以访问您的上传文档了。

 

PHP - 是否已经安装?我安装了那个版本?

在一个web站点目录下,创建一个叫"info.php"的文件,在其中包含下面的文本,在浏览器访问该文件:

<?PHP phpinfo() ?>

如果返回一个空白页,那么说明PHP没有安装。请查看安装文档,其中包含了那里可以下载PHP的信息。

 

为何所有的页面都是空的?

检查 "config.php"中的"dirroot"变量。您必须使用完全的绝对路径, 例如:

$CFG->dirroot = "d:\inetpub\sites\www.yoursite.com\web\moodle";

 

Redhat Linux 平台请参照: Redhat Linux

 

我的页面显示致命错误, 例如:call to undefined function: get_string()

如果您看到这样的错误信息:

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文件,而不是一个适当的文本文件。

 

为何我一直获得错误信息 "HTTP头部已经被设置"?

如果您看到这样的错误信息:

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的写字板 - 所以您必须使用一个其他的编辑工具来完全移除这些空格和空行。

 

为何我一直获得错误信息: Failed opening required '/web/moodle/lib/setup.php'

在您的"config.php"中,您配置用于"dirroot"变量的值 必须是从您的服务器硬盘根目录开始的完全路径

有时候是由于人们不恰当的使用了从他们主目录开始的路径, 或者使用了从Web服务器根目录开始的相对路径。

 

我添加的任何文本只要包含单引号(') 或双引号 (") 就会引发错误或被转换为包含斜线(/)

这个单引号(')问题是由于不恰当的 "magic quotes" 设置。 Moodle 需要下面的设置 ( 这通常是默认设置):

magic_quotes_gpc = On
magic_quotes_runtime = Off

请检查安装文档中的 Web服务器配置 部分了解详情。

 

为何我一直获得关于session_start的错误?

如果您:

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"

 

当我进入管理页面时,我被告知要保持 "dirroot" 空白!

如果您能看到这样像 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 站点?

有两个主要的部分需要您进行备份:数据库和上传的文件。 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/

 

为何我的 Moodle 站点不能正确地显示 日期 & 时间 ?

每个语言都需要一个指定的语言代码 (叫做 本地代码 ) ,才能允许日期被正确地显示。语言包中包含了缺省的标准语言代码, 但有时它们不能在 Windows 服务器上工作。

您可以在这两个页面中找到Windows所用的正确的本地代码 : Language codesCountry/region codes.(举例来说:西班牙语是 "esp_esp" )

新的本地代码能被输入从 管理 -> 配置 -> 变量 页, 他们将覆盖当前选择的语言包。

 

论坛中不能发出电子邮件拷贝

必须 适当地设置 cron 任务如果您想让 Moodle 自动的从论坛、作业等中发送出邮件。 This same 这个任务同时也运行一系列的清除任务,例如:删除过期未确认的用户, 未登入的旧学生等等。

基本上,您需要设置一个进程来有规律的调用脚本 http://yoursite/admin/cron.php。 请参照 安装文档中关于 cron 的章节.

提示: 尝试使用 Moodle 变量页面的缺省设置。 保持 "smtphost" 为空。 这对于大多数用户来说都是可接受的。

 

 


提交一个新的常见问题 (FAQ) (请包括问题答案!)


感谢 John Eyre 帮助维护这份 常见问题列表。

Moodle文档

Version: $Id: faq.html,v 1.3 2008/05/08 17:06:29 liling Exp $