安裝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: