# 常见问题解答(FAQ)

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

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

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

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

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

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

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

页面上显示致命的错误，例如： call to undefined function: get_string()

为何我一直获得 "头部已经发送 (headers already sent)"的错误?

我一直获得这个错误: Failed opening required '/web/moodle/lib/setup.php'

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

我一直获得关于session_start的错误信息

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

我已经登录但显示不正确（我能登录系统并且可以浏览）

当尝试添加资源时我收到了错误信息

在初始的设置过程中，我未被要求创建一个管理员账号！

我根本不能登录 - 总是被停留在登录页面。

我如何才能备份我的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 codes 和 Country/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.1.2.1 2006/04/23 06:51:20 koenr Exp $