Moodle 安装问答(FAQ)

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

在社区提问有关安装问题时候需要提供你尝试安装 Moodle 的那些系统信息

当你在 Moodle 官方的 安装问题社区中提问的时候,请尽可能多的提供你系统的运行信息。

考虑提供下面的部分信息或者全部信息:

  • 服务器操作系统的名称(如果可能,请也提供版本号)
  • PHP 版本 (例如:PHP 5.3.2)
  • 数据库服务器的类型和版本(例如 MySQL 5.5.18)
  • 浏览器名称和版本(例如:Internet Explorer 8)
  • Moodle 版本 (例如:2.1)
  • Moodle 安装类型(新安装/更新安装)
  • Moodle config.php 信息(为了安全起见,请删除密码)
  • Phpinfo 信息,如果必要的话。

请提供详细的信息,请不要使用类似,帮助,非常紧急这样的字眼。

复制和粘贴完整的错误信息,所有的错误都是有原因的,就算是返回空白页面,也是有什么原因来导致空白页面的。

上面的信息在你向 OSSEZ 社区 提问的时候也同样适用,请尽量使用多的信息,这样便于我们进行判断。

顶部

PHP - is it installed and what version do I have?

Make a new file on your web site called info.php, containing the following text, and call it from your browser:

<?PHP phpinfo() ?>

If nothing happens then you don't have PHP installed or your webserver is not configured to handle .php files properly. See the installation docs for some information about where to download it for your computer. See the phpinfo page for details about the content of this page.

Top


我被告知我需要安装 intl php扩展来继续 Moodle 2.x 的安装

intl.dll 是 Zend 提供的 PHP 扩展,在 PHP 5.2.8 后默认进行安装。这个 PHP 扩展被用了提供 PHP 的国际化能力,Moodle 2.x 部分使用了这个扩展。

如果你在你本地或者网路服务器上安装 Moodle,你可以下载或者更新你的 PHP 到最新的版本,然后你可以启用所有你需要的 PHP 扩展,其中包括了 php_intl.dll。

如果你是在虚拟主机上安装 Moodle,你需要联系虚拟主机的管理员,然后需要虚拟主机服务商配合进行修改。

作为可选方案,你可以解压下载的intl.dll 扩展,然后将 intl.dll 上传到 php/ex 文件夹,然后添加下面的内容:

 extension=php_intl.dll

这句话位于 php.ini 的 Extensions 扩展目录。

为了解决这个问题,你也可以设置 PHP 错误的提示级别如下:

 intl.error_level = E_WARNING 

但是这不是有效的解决方案。

如果你使用的是 Linux 安装,可以使用 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 扩展。你可能希望在你的 php/ext 目录中使用最新的 PHP 扩展文件,你可以使用上面提供的方法来进行更新。

但是请注意,你安装的 Moodle 版本可能不能使用新扩展所提供的所有功能,同时一些新的扩展有可能导致很多不可预料的结果

比较好的情况是,每年考虑更新一次你的操作系统,或者使用 PHP 官方提供的稳定版本。

不要尝试在系统中使用最新的版本,对于实际使用的机器来说,稳定是最重要的。

顶部

我需要在php.ini中启用那些扩展?我还需要做那些工作?

这些操作需要你有服务器的完全控制权,如果你使用的是虚拟主机服务,那么配置可能有些不同,这些配置将会在后面进行描述。

在 php.ini 文件中,你需要删除行开头的分号来取消注释。

针对 Moodle 的安装,你需要修改一些 php 的配置,同时需要确定 Moodle 运行所需要的扩展是可用的。

这些内容包括如下:

资源限制

 memory_limit = 128M     //这个是内存使用的最大值,如果你使用的是共享服务器,你可能没有办法获得这么大的值

数据处理

 post_max_size = 512M    //这个允许你通过 POST 方法上传的数据量最大能达到 512MB,这个完全根据你的服务器性能和情况来决定

路径和文件夹

 doc_root ="driveletter:\path\to\server\active\web\directory"  (例如: d:\Apache\htdocs 或者 e:\iis\wwwroot )
 and
 extension_dir = "driveletter:\path\to\php\ext" (例如 d:\php\ext 或者 e:\iis\php\ext)

文件上传

 upload_max_filesize = 512M    (这个与 post_max_size  的配置是不同的,这个限制可以上传的最大文件大小)

动态扩展

PHP 5.2.x (Moodle 1.9 及其后期版本) PHP 5.3.x
 extension=php_curl.dll
 extension=php_exif.dll
 extension=php_gd2.dll
 extension=php_gettext.dll
 extension=php_imap.dll
 extension=php_ldap.dll
 extension=php_mbstring.dll
 extension=php_mcrypt.dll
 extension=php_mssql.dll
 extension=php_mysql.dll
 extension=php_mysqli.dll
 extension=php_openssl.dll
 extension=php_soap.dll
 extension=php_sockets.dll
 extension=php_sqlite.dll
 extension=php_xmlrpc.dll
 extension=php_intl.dll
 extension=php_zip.dll  ; 添加的扩展
 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      ; 必须设置在 mbstring 的后面,因为这个需要 mbstring 的支持
 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
注意:如果你使用的 PHP 版本是 v5.2.8及其早期版本,但是你却希望安装 Moodle 2.0.x,请添加动态扩展库 intl.dll 和 zip.dll。请注意 v5.2.8及其早期版本已经不能运行 Moodle 2.1 了。

上面的表格已经列出了需要的动态库,这里还有一些其他的可能性,但是这里列出了最基本的一些动态库。

除非你有特殊的需要,请尽量按照上面的表格需要的动态库来配置你的系统,如果你依然需要配置你自己需要的动态库,你需要确定有什么情况可能会发生。

上面的这些扩展对你在你系统中安装其他的 PHP 应用可能是接近的。

例如, Oracle 的扩展没有在这里显示,但是 Moodle 是可以支持 Oracle 数据库的。在其他的一些地方,人们通常在使用 "Magic quotes" 的时候遇到一些问题。Magic quotes 应该是被设置为关闭的,这些特性只在早期的 PHP 版本中是采用,而让一些没有PHP使用经验的用户来使用 PHP。如果一些用户依然使用一些非常糟糕的脚本,这些人希望能够引起大家的注意或者他们已经被删除的脚本。

为什么不用魔术引号(Magic quote)

魔法引用(Magic quote)可以保护PHP脚本免受SQL注入攻击。这很好。但是出于某些原因,你可以在php.ini中关闭这个配置。所以你如果要写出一个有弹性的脚本,你总要检查魔法引用是开启还是关闭。这样一个“特性”应该让编程更简单,而事实上变得更复杂了。

顶部

Moodle 的配置文件保存了什么内容和保存在哪里

Moodle 配置文件保存在 config.php 文件中,配置文件保存在你 moodle 的文件夹。这个配置文件将会在 Moodle 安装的时候进行创建。

如果你的 Moodle 安装程序不能创建这个文件,你可以手动创建这个文件。

请参考 Moodle 配置文件 的文档内容。

顶部

下载 Moodle 的早期安装版本

如果在 标准 Moodle 下载界面 中不能找到相关的 Moodle 版本,你依然是可以下载的。Moodle 的 zip 和 tar 软件包位于 http://download.moodle.org/stable[version_number],查看下面的链接。

2.0 版本 1.9 版本 1.8 版本
1.7 版本 1.6 版本 1.5 版本
1.4 版本 1.3 版本

你可以使用 wget, lynx 或者 curl 从下面的 URL:http://download.moodle.org/stable[version_number] 中下载。

例如:下载 Moodle 版本 1.5, 使用 http://download.moodle.org/stable15链接。你可以看到目录树中显示的的文件。和下载其他版本一样,单击你希望下载的的版本,如果你希望下载最新的版本,请滚动屏幕到页尾,然后下载 "moodle-latest" 文件。
  • Windows 包:如果在 Moodle packages for Windows 链接中不能找到你希望下载的软件版本,使用URL:http://download.moodle.org/windows/MoodleWindowsInstaller-latest-[version_number].zip
  • Mac 包:如果在 Mac packages 链接中不能找到你希望下载的软件版本,使用下面的下载 URL 链接,这个需要根据你使用的 CPU 是 Intel 还是 PPC 来做出选择:
http://download.moodle.org/macosx/Moodle4Mac-Intel-[version_number].dmg
http://download.moodle.org/macosx/Moodle4Mac-PPC-[version_number}.dmg

顶部

如何启用和检查 PHP 错误日志

PHP 可以通过一些不同的方法来设置错误日志,设置错误日志通常牵扯到 php.ini 和 ini_set 这 2 个命令。

请查看 Moodle 设置 PHP 错误日志 来获得更多详细信息。

"Could not find a top level course"

If this appears immediately after you have attempted to install Moodle it almost certainly means that the installation did not complete. A complete installation will ask you for the administrator profile and to name the site just before it completes. Check your logs for errors. Then drop the database and start again. If you used the web-based installer try the command line one. Does your computer definitely have sufficient resource to run Moodle?

Email copies are not being sent from my forums

You must set up cron properly if you want Moodle to send out automatic email from forums, assignments etc. This same process also performs a number of clean-up tasks such as deleting old unconfirmed users, unenrolling old students and so on. Please refer to the cron instructions.

Tips:

  • Try the default settings in Settings > Site administration > Plugins > Message outputs > Email. This generally works. Except...
  • On a Windows server you *must* supply the address of an SMTP server (Windows, unlike Unix, does not have a build in mail server) in the above settings page
  • Make sure that allowuseremailcharset in Settings > Site administration > Plugins > Message outputs > Email is set to No unless you really know what you are doing. Setting this to Yes can cause a problem in some versions of Moodle.
  • Check your firewall or ask your network administrator. Many mail servers are heavily locked down and you may need permission to send mail through them.

Top

I can't log in - I just stay stuck on the login screen

This may also apply if you are seeing “Your session has timed out. Please login again” or "A server error that affects your login session was detected. Please login again or restart your browser" and cannot log in.

The following are possible causes and actions you can take (in no particular order):

  • Check first that your main admin account (which will be a manual account) is also a problem. If your users are using an external authentication method (e.g. LDAP) that could be the problem. Isolate the fault and make sure it really is Moodle before going any further.
  • Check that your hard disk is not full or if your server is on shared hosting check that you have not reached your disk space quota. This will prevent new sessions being created and nobody will be able to log in.
  • Carefully check the permissions in your 'moodledata' area. The web server needs to be able to write to the 'sessions' subdirectory.
  • Your own computer (not your Moodle server) may have a firewall that is stripping referrer information from the browser. Here are some instructions for fixing Norton firewall products.
  • Try deleting the sessions folder in your moodledata directory (anybody currently logged in will be thrown out)
  • Try deleting cookies on your computer and/or try another browser or another client computer
  • In Settings > Site administration > Server > Session Handling, try setting a value for 'Cookie prefix'. You can also do this by setting $CFG->sessioncookie='something'; in config.php. This is especially true if you are using multiple Moodles on the same browser.
  • Make sure you have not removed or changed the Password Salt value(s) in config.php. If passwords were created using a salt the correct salt must be in config.php for those passwords to continue to work. This is easily done if you recreate config.php while performing an upgrade and forget to transfer the salt values.
  • Do you have a .htaccess file in your Moodle folder (or its parent directories). If so, is there anything in there that might be causing trouble (strange redirects, access restrictions etc.)?
  • Check the value of mnet_localhost_id in the mdl_config database table. It's normally 1 but must match the mnet_hostid field in your user records in the mdl_user table for the user to be recognised. It can sometimes get changed spuriously during upgrades or site migrations.
  • Check config.php - it should NOT have any spaces/new lines at the end of code.
  • You are using the correct username and password, yes?

If you are still having problems, read the Cannot log in page. You could also try changing the admin password. Proceed as if you have lost it - see Administration FAQ.

Top

I log in but the login link doesn't change. I am logged in and can navigate freely.

Make sure the URL in your $CFG->wwwroot setting is exactly the same as the one you are actually using to access the site.

Top

Uploaded files give "File not found"

For example: Not Found: The requested URL /moodle/file.php/2/myfile.jpg was not found on this server.

Your web server needs to be configured to allow the part of the URL after a script name to be passed directly to the script. This is usually enabled in Apache 1, but is usually disabled by default in Apache 2. To turn it on, add this line to your httpd.conf, or to a .htaccess file in your local directory (see Installing Moodle for more details):

AcceptPathInfo on

Note, this will ONLY work for Apache versions 2.x.

For IIS you need to configure URL rewriting. This feature is not available in IIS 6 so you need to install a 3rd party IIS extension - see http://msdn.microsoft.com/en-us/library/ms972974.aspx.

IIS 7 now comes with the new URL Rewrite Module so a 3rd part extension is no longer required if you are running IIS 7. See http://learn.iis.net/page.aspx/734/url-rewrite-module for more details.

Once you've got URL rewriting working the recommended rewriting rule is:

RewriteRule ^([^\?]+?\.php)(\/.+)$ $1\?file=$2 [QSA]

In theory you could try to use path info on IIS too, but it is not reliable, especially when using unicode file names.

If you are unable to configure your server properly then you can switch Moodle to use an alternative method. The major disadvantages is that you will not be able to use SCORM packages at all and some Adobe Flash and Java applets will not work either.

To use this alternative method, you should change the slasharguments variable. For moodle versions < 1.7, this is located in the Operating System section of Administration > Configuration > Variables. In later versions, this option is located in Site Administration > Server > HTTP. You should now be able to access your uploaded files.

See also:

Top

Why are all my pages blank?

Check the dirroot variable in config.php. You must use complete, absolute pathnames (e.g.)

$CFG->dirroot = "/var/www/moodle";

Another reason might be that PHP has not been configured to support MySQL (or whatever other database you are using). This is common on RedHat and OpenBSD installations. In this case, an error is generated, but since error displays are often disabled by default, all that is seen on the browser is a blank screen. To enable PHP error displays see How to enable and check PHP error logs.

To determine if database support is your problem, insert this as the second line in your config.php file

phpinfo();

then reload the web page. Examine the output closely to see if you chosen database is supported. If not, look for a package you are missing.

Top

Why is a particular page blank or incomplete?

  • Check your web server log files!!
If a particular page is blank or incomplete (it doesn't display the footer), before you do anything else switch on Debugging and check your PHP error logs. Having established that PHP error logging is working, reproduce the error. Immediately check the error log file right at the end. Hopefully you will see a PHP error message at or very near the end of the file. This may solve your problem directly or makes it a lot easier to diagnose the problem in the Moodle forums.
  • If you are upgrading to a new version of Moodle, check that you do not have an old version of a non-standard block or module installed. Remove any such blocks or modules installed using the admin settings page and start the install process again. However, do also make sure that you have included all optional plugins that were required by your courses. This is particularly common with "editing on".
  • If you do not see any blocks listed, turn editing on and remove any blocks that you have added to that page and try reloading.
  • You may get this error immediately after selecting a language. At this stage of the installation process your Moodle computer may need to connect to the Internet and download a language pack, so check that the computer can access the Internet by using a browser. Check also that your PHP settings are as given in the Moodle Moodle Requirements page.

See also:

Installation hangs when setting-up database tables

Sometimes the installation will hang when setting up tables, where only half the page displayed in the browser and/or other outputs are removed. You may see truncated MySQL statements, or the “Scroll to continue” link is displayed but no “Continue” button is there.

See Unexpected installation halts for more about solutions that involve:

  • Checking for MySQL limits
  • Checking the .htaccess files
  • Code customizations issues
  • Checking memory limit
  • Upgrade incrementally
  • Fix fopen function

Top

Why can't I upload a new image into my profile?

If you don't see anything on your user profile pages to let you upload user images then it's usually one of the following:

  • The permissions associated with the role you are using are preventing you from changing your profile picture.
  • GD is not installed, or is not enabled on your server. Make sure GD has been included in your PHP installation. You can check this by going to Site Administration > Server > PHP info and looking for the gdversion setting. This setting is chosen automatically every time you visit that page. If it shows GD version 1 or version 2 then everything should be fine. Save that configuration page and go back to your user profile.
  • GD is installed, but is in some way corrupt. For instance, see this discussion on empty lines or white spaces in config files.

GD is a library that allows image processing. For example, when all is well with your system, and you upload a new profile image, GD compresses the image and produces two thumbnails, one is 100x100 pixels, and the other is 35x35 pixels.

If Moodle thinks GD is not installed, then you will need to install the GD library.

  • On Unix you may need to re-compile PHP with arguments something like this:
./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
  • On Windows this is usually a matter of "turning on" the extension in PHP by editing your php.ini file. To do this remove the semicolon for the php_gd2.dll extension - check that this file is actually present in your php extensions folder first (search your php.ini for extension_dir to determine where this points to on your hard disk). You should then have a line that looks like this:
extension=php_gd2.dll
Windows users should see the installation instructions for further help.

3. Remember to restart your webserver (if possible) and re-visit the Moodle configuration page after making any changes to PHP so it can pick up the correct version of GD.

See also: Using Moodle forum discussion Profile pictures for additional information.

Why doesn't my Moodle site display the time and date correctly?

Each language requires a specific language code (called a locale code) to allow dates to be displayed correctly. The language packs contain default standard codes, but sometimes these don't work on Windows servers.

You can find the correct locale codes for Windows on these two pages: Language codes and Country/region codes (e.g. "esp_esp" for spanish)

These new locale codes can be entered on the Administration >> Configuration >> Variables page, where they override the ones in the currently chosen language pack. Top

How do I uninstall Moodle?

Webhost/manual installation: If you have installed Moodle manually or have installed onto a webhost, follow these steps:

  • Delete the moodle database using this mysql command (or delete using your mysql client, e.g. PHPMyAdmin):
sql>DROP DATABASE moodle;
In the above example replace 'moodle' with the name of the moodle database you created when installing.
  • Delete the moodledata directory. If you, or your users, have uploaded materials into this directory take a copy of these before deleting this directory.
  • Delete the moodle directory itself. This will delete all of the moodle PHP script files.

XAMPP windows installation: If you have installed Moodle on windows through the XAMPP package, follow these steps:

  • Open cmd.exe and navigate to this directory within your installation directory:
server/mysql/bin
  • Run this command, replacing USERNAME with your database username (the default is "root") and DATABASE with your database name (the default is "moodle"):
mysqladmin.exe -u USERNAME -p drop DATABASE
  • Enter your database password at the prompt (the default is "" [blank]).
  • Enter "y" to confirm the database drop.
  • Delete the moodledata directory. If you, or your users, have uploaded materials into this directory take a copy of these before deleting this directory.
  • Delete the moodle directory itself. This will delete all of the moodle PHP script files.

Migrating Moodle to a new site or server

Migrating Moodle means that you have to move the current installation to a new server, and so may have to change IP addresses or DNS entries. To do this you will need to change the $CFG->wwwroot value in the config.php on the new server. You will also have to change any absolute links stored in the database backup file (before restoring the file on the new server) either using the admin/replace.php script, your text editor or another "search and replace" tool, e.g. sed. For more details see the Moodle Migration page.

Top

Why does my new installation display correctly on the server, but when I view it from a different machine, styles and images are missing?

In the installation instructions, one of the suggested settings for 'webroot' is 'localhost'. This is fine if all you want to do is some local testing of your new Moodle installation. If, however, you want to view your new installation from another machine on the same local area network, or view your site on the internet, you will have to change this setting:

  • For local testing, 'localhost' is fine for the webroot ($CFG->wwwroot in config.php).
  • If you want to test your site from other machines on the same local area network (LAN), then you will have to use the private ip address of the serving machine, (e.g. 192.168.1.2/moodle) or the network name of the serving computer (e.g. network_name_of_serving_machine/moodle) as the web root. Depending on your LAN setup, it may be better to use the network name of the computer rather than its (private) ip address, because the ip address can and will change from time to time. If you don't want to use the network name, then you will have to speak to your network administrator and have them assign a permanent ip address to the serving machine.
  • Finally, if you want to test your new installation across the internet, you will have to use either a domain name or a permanent (public) ip address/moodle as your web root. To handle both types of access, see masquerading.

Top

Maximum upload file size - how to change it?

There are several places to change the maximum file upload size. The first place to check is the Administration block. Security -> Site Policies -> and look for "Maximum Uploaded File Size". This is the "maxbyte" variable found in older versions of Moodle (under Admin > Variables). Teachers may also set the maximum file size by the course administration block.

If the above does not provide a large enough figure you will need to make changes in your server settings. The usual place is in your php.ini file (go to Site administration > Server > PHPinfo and check a few lines down for its location). Look for settings upload_max_filesize and post_max_size, setting them both to your desired new value (e.g. '64MB'). You will need to restart the web server for these changes to take effect - e.g. on Linux, /etc/init.d/apache2 force-reload. Check your documentation or just reboot the server.

For more help see:

Top

Moodle claims PHP float handling is not compatible

The symptom is that when you try to install or upgrade your Moodle, you get a message "Detected unexpected problem in handling of PHP float numbers".

This forum thread and MDL-18253 have more information. In short, this problem should not happen, you can help us by telling posting information about exactly which version of PHP, and OS you are using. That may let us find a way to work around this problem.

You may be able to solve this issue by installing a more recent PHP versions. If you compile PHP yourself from source, changing the compilation options may help. However, since we don't understand the cause, we don't really know. If you do find a solution that works for you, please do tell us about it.

Update: we have a guess that the problem may be the 'precision' setting in your php.ini file. In a default PHP install this is set of 14. On at least one server that exhibited this problem it had been changed to a smaller value. So, if you see this problem, please try adding

ini_set('precision', 14);

to your config.php file, and report your success in MDL-18253.

When upgrading Moodle claims my database is not UTF8 when I'm sure it is

The symptom is that you are upgrading a post-1.6 Moodle to a newer version. The Environment check tells you that your database is not UTF8 and refuses to upgrade.

The database may not have it's character encoding set quite correctly. You can safely try this command on the database (mySQL):

   ALTER DATABASE moodle DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

(Change 'moodle' for the name of your database). You need to copy this into your MySQL client program that comes packaged with it.

Alternatively, you maybe adding a new clean install Moodle version to an existing web server and the UTF8 check error will not allow you to proceed. Use phpMyAdmin to help you. This web client is available as a plugin for Moodle or through your web hosting control panel. Using this program, create an empty database (for example moodle199) and make sure "MySQL connection collation" is a utf8 entry, such as utf8_general_ci. Go back to the Moodle installation screen with the check error, hit the previous button on the bottom and make sure the databae has the same name as your new empty database (for example moodle199).

If your Moodle site is version 1.5 or older then it's telling the truth.

Top

How do I run multiple instances of Moodle without duplicating base code?

See this thread for a detailed explanation by Martin Langhoff.

What is FreeTDS and how can I use it in my installation?

FreeTDS is an open source implementation of the Tabular Data Stream protocol used by Microsoft SQL Server and Sybase for their databases. Unfortunately, Microsoft servers don't usually accept TDS 5.0 connections. FreeTDS allows your Unix/Linux applications to talk to these other database products and import and export data between different systems successfully.

How do I install a plugin?

Please see Installing plugins.

I can't enable a plugin on the Plugins overview page because the icon is not clickable

The open and closed eye icon on the Plugins overview page is simply there to show whether or not a plugin is enabled. You can't edit plugins from this screen. If you wish to enable a plugin, to to the appropriate page for managing the type of plugin you need, for instance Settings>Site administration>Plugins>Repositories>Manage repositories or Settings>Site administration>Plugins>Activity modules>Manage activities.

See also