新聞中心
無憂主機原創(chuàng)drupal官方技術文檔翻譯:解決 drupal訪問白屏(訪問空白頁面)
本文是根據drupal官方技術文檔"The White Screen of Death (Completely Blank Page)"翻譯過來,感謝您的閱讀和支持。 譯文: “White screen of death,WSOD。”白屏,想必在很多drupal用戶在移動到一個頁面時,突然間發(fā)現(xiàn)頁面內容消失了,完全的白掉了。The White Screen of Death (Completely Blank Page)——白屏!沒內容,沒有錯誤提示。白屏不僅僅會在升級升級主題、升級核心、升級模塊時產生,而且還具有一定的偶然性,但問題始終是有方法解決的。這篇文章中我們就介紹一下處理drupal白屏時的一些方法。 首先,我們要處理白屏的問題,,在某些情況下讓我們毫無頭緒,所以我們現(xiàn)在要做的就是臨時開啟錯誤報告。 開啟錯誤報告方法如下: 1:使用文檔編輯器(dreamweaver或者editplus)打開根目錄下的index.php。 2:在index.php的最低部加入代碼(不要去修改原有的信息,加在底部即可): <? error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ?> 注釋:如果您建立的是多站點,但您只想讓錯誤報告在一個站點顯示的話,只需要在前面加一個if進行判斷:<? If $_server['http_host']==='需要顯示站點域名'{ 這里把顯示錯誤報告的代碼復制到這里。 } ?> 如果問題發(fā)生在運行update.php的時候,我們就用文檔編輯器開打update.php把ini_set('display_errors',FLASE);這一句的注釋掉。 日志文件(Log) 日志文件可以讓我們知道造成白屏的錯誤是什么操作產生的,并能告訴我們這個錯誤的文件在哪。在無憂主機(www.gle-technology.com)上是提供日志文件下載的。而在nuix shell下我們鍵入"tail /var/log/apache/error.log"進入服務器的日志文件。當然我們還可以鍵入: grep 'ErrorLog' /etc/apache2/* grep 'ErrorLog' /etc/apache2/*/* 來查找日志文件的存放地址。 在php文件的末尾是空白 最普通的造成白屏的代碼錯誤是額外的空白空間在PHP文件的最末端,避免這個問題您可以去參考drupal的編碼標準(drupal coding standard)是不要在php文件末尾加上?>關閉。 php版本問題 在php4的一些版本下函數(shù)申明中申明的變量因為太多的“=”或者是處理“&$...”的時候因為PHP4處理器的不兼容造成白屏。 解決辦法:升級到PHP5 當您的的網站運行在多PHP版本的服務器上時,可能會在.htaccess上添加一條 "addType x-mapp-php5 .php"來告訴服務器用PHP5而不是PHP4。 如果是這個情況下,我們只需要把.htaccess中的addType x-mapp-php.php移除即可。 升級過程中造成不可見的錯誤 如果升級了模塊,您首先可能會加載文件來測試一下,并確定沒有明顯的PHP語法錯誤。這是如果發(fā)生白屏是因為include_once()或者是require_once()函數(shù)調用不會報錯(缺少原因)。在您的系統(tǒng)上運行這樣的命令(這需要PHP接口或者是CLI安裝了的情況下)“$ php <filename>”,這個命令會詢問您的PHP去解析您的文件,如果遺失了“;”或者是“}”會立即給您返回錯誤提示,在我們修改錯誤以后,再次再您的服務器上運行。 在*nix系統(tǒng)下,運行“$ find . -type f -name '*.php' -exec php -1 '{}' \;” 。 為了達到更好的效果,您可能要為檢測這樣的錯誤寫一個自動檢測。(更多信息請查看:http://drupal.org/simpletest) 輸出緩沖 一些模塊需要輸出緩沖功能開啟。 開啟這項功能,我們只需要在您網站根目錄下的.htaccess文件中加入如下代碼: php_value output_buffering On php_value output_handler mb_output_handler Zend主題的兼容模式 當您的網站遷移至另一個php虛擬主機上時出現(xiàn)白屏,可能就是因為zend主題的兼容造成的(在php.ini文件中)。在查看錯誤報告顯示的是“Trying to clone an uncloneable object of class mysqli” ,我們在apache服務器下的php.ini鍵入這行命令:“Zend.ze1_compatibility_mod= off” 。 清除緩存 有時候只要我們清楚網站的緩存就可以解決白屏問題,緩存存儲在您當前網站數(shù)據庫的cache表中,刪除數(shù)據表內容的SQL命令是“Truncate Table 表名;”(這里的話表名是cache)。 WIMP(windows IIS mysql php) 如果您站點的安裝環(huán)境是WIMP,當在http://www.example.com/install.php發(fā)生白屏時,您應該檢測一下是否您在IIS服務器上安裝了ISAPI模塊。如果沒有安裝,請及時安裝。 PHP內存限制 另一個很普遍造成白屏的原因就是內存限制,這個問題很容易發(fā)生在您登錄到模塊管理頁面。 解決方案:http://drupal.org/node/31819 您可能需要運行一下updata.php,如果您不知道如果運行或者您沒有權限運行,請查閱:http://drupal.org/node/61736 不推薦的模塊版本 如果您下載的模塊不是推薦的版本,您可以要把它升級到推薦的版本。模塊的話我們能在http://drupal.org/project/modules查看版本情況,recommended就是推薦的意思。 名字沖突 另一個造成白屏的的原因很可能就是名字沖突,一個模塊名和主題名相同。 這個時候是沒有錯誤信息產生的,因為這是需要drupal主題系統(tǒng)的行為。 解決辦法:重命名,當然不能相同。 Template.php編碼問題 當錯誤提示為:Cannot modify header information – headers already sent by (output started at .../sites/all/themes/THEME_NAME/template.php:1) in .../includes/common.inc on line 314. 從上面看出輸出在第一行,這就是文件的編碼方式不正確造成的。 解決方法:用文檔編輯器(推薦使用dreamweaver)打開文件后ctrl+j進行編碼方式修改(推薦utf-8)。 禁用模塊 當白屏是由于模塊產生,卻又不知道是哪個模塊造成的,我們就可以按下列的方法來找出問題模塊。 1:在管理員后臺禁用模塊 一個個的禁用的模塊來尋找出造成白屏的模塊。瀏覽到“管理員—>模塊” ,把模塊的復選框設定為取消,保存。 2:通過數(shù)據庫禁用模塊 在您drupal網站的數(shù)據庫中找到一張system的數(shù)據表,然后把它的status狀態(tài)改為0,接著刪除緩存。 PHP超時 默認情況下PHP超時在php.ini文件下定義的是30秒,這對于模塊的激活和開啟來可能會有點短,從而造成白屏。 超時的錯誤提醒是:Fatal error: Maximum execution time of 30 seconds exceeded in X:..... 此時我們增加執(zhí)行時間的辦法有如下: 在../sites/default/settings.php的最底部加入:ini_set('max_execution_time',168);?? /*這里的取值可以在147-168間*/ 這只是無憂主機(www.gle-technology.com)翻譯的處理drupal網站訪問白屏方法,無憂主機(www.gle-technology.com)小編選了一些比較常用和有效處理白屏的方法記載下來,確實有一些感覺是雞肋也就沒有進行翻譯,如果上述處理drupal白屏的方法還不能解決您的實際需求的話,請您查看原文:http://drupal.org/node/158043 純Linux環(huán)境下高端免備案【香港獨立IP地址】 php空間,僅僅只需199元一年起。商務中國域名核心代理直銷50元注冊國際頂級域名
本文地址:http://www.gle-technology.com/drupal/6929.html