新闻中心

无忧主机原创drupal官方技术文档翻译:解决 drupal访问白屏(访问空白页面)

作者 / 无忧主机 时间 2012-08-01 23:23:42

本文是根据drupal官方技术文档"The White Screen of Death (Completely Blank Page)"翻译过来,感谢您的阅读和支持。 译文: “White screen of death,WSOD。”白屏,想必在很多drupal用户在移动到一个页面时,突然间发现页面内容消失了,完全的白掉了。The White Screen of Death (Completely Blank Page)——白屏!没内容,没有错误提示。白屏不仅仅会在升级升级主题、升级核心、升级模块时产生,而且还具有一定的偶然性,但问题始终是有方法解决的。这篇文章中我们就介绍一下处理drupal白屏时的一些方法。 首先,我们要处理白屏的问题,,在某些情况下让我们毫无头绪,所以我们现在要做的就是临时开启错误报告。 开启错误报告方法如下: 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']==='需要显示站点域名'{ 这里把显示错误报告的代码复制到这里。 } ?> 如果问题发生在运行update.php的时候,我们就用文档编辑器开打update.php把ini_set('display_errors',FLASE);这一句的注释掉。 日志文件(Log 日志文件可以让我们知道造成白屏的错误是什么操作产生的,并能告诉我们这个错误的文件在哪。在无忧主机(www.51php.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的一些版本下函数申明中申明的变量因为太多的“=”或者是处理“&$...”的时候因为PHP4处理器的不兼容造成白屏。 解决办法:升级到PHP5 当您的的网站运行在多PHP版本的服务器上时,可能会在.htaccess上添加一条 "addType x-mapp-php5 .php"来告诉服务器用PHP5而不是PHP4。 如果是这个情况下,我们只需要把.htaccess中的addType x-mapp-php.php移除即可。 升级过程中造成不可见的错误 如果升级了模块,您首先可能会加载文件来测试一下,并确定没有明显的PHP语法错误。这是如果发生白屏是因为include_once()或者是require_once()函数调用不会报错(缺少原因)。在您的系统上运行这样的命令(这需要PHP接口或者是CLI安装了的情况下)“$ php <filename>”,这个命令会询问您的PHP去解析您的文件,如果遗失了“;”或者是“}”会立即给您返回错误提示,在我们修改错误以后,再次再您的服务器上运行。 在*nix系统下,运行“$ 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虚拟主机上时出现白屏,可能就是因为zend主题的兼容造成的(在php.ini文件中)。在查看错误报告显示的是“Trying to clone an uncloneable object of class mysqli” ,我们在apache服务器下的php.ini键入这行命令:“Zend.ze1_compatibility_mod= off” 。 清除缓存 有时候只要我们清楚网站的缓存就可以解决白屏问题,缓存存储在您当前网站数据库的cache表中,删除数据表内容的SQL命令是“Truncate Table 表名;”(这里的话表名是cache)。 WIMPwindows IIS mysql php 如果您站点的安装环境是WIMP,当在http://www.example.com/install.php发生白屏时,您应该检测一下是否您在IIS服务器上安装了ISAPI模块。如果没有安装,请及时安装。 PHP内存限制 另一个很普遍造成白屏的原因就是内存限制,这个问题很容易发生在您登录到模块管理页面。 解决方案:http://drupal.org/node/31819 您可能需要运行一下updata.php,如果您不知道如果运行或者您没有权限运行,请查阅:http://drupal.org/node/61736 不推荐的模块版本 如果您下载的模块不是推荐的版本,您可以要把它升级到推荐的版本。模块的话我们能在http://drupal.org/project/modules查看版本情况,recommended就是推荐的意思。 名字冲突 另一个造成白屏的的原因很可能就是名字冲突,一个模块名和主题名相同。 这个时候是没有错误信息产生的,因为这是需要drupal主题系统的行为。 解决办法:重命名,当然不能相同。 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:通过数据库禁用模块 在您drupal网站的数据库中找到一张system的数据表,然后把它的status状态改为0,接着删除缓存。 PHP超时 默认情况下PHP超时在php.ini文件下定义的是30秒,这对于模块的激活和开启来可能会有点短,从而造成白屏。 超时的错误提醒是:Fatal error: Maximum execution time of 30 seconds exceeded in X:..... 此时我们增加执行时间的办法有如下: 在../sites/default/settings.php的最底部加入:ini_set('max_execution_time',168);   /*这里的取值可以在147-168间*/ 这只是无忧主机(www.51php.com)翻译的处理drupal网站访问白屏方法,无忧主机(www.51php.com)小编选了一些比较常用和有效处理白屏的方法记载下来,确实有一些感觉是鸡肋也就没有进行翻译,如果上述处理drupal白屏的方法还不能解决您的实际需求的话,请您查看原文:http://drupal.org/node/158043   纯Linux环境下高端免备案【香港独立IP地址】 php空间,仅仅只需199元一年起。商务中国域名核心代理直销50元注册国际顶级域名

本文地址:https://www.51php.com/drupal/6929.html

1
1
1
1
1
1
1