使用PHP7时用于管理员的WSOD

时间:2018-04-27 作者:Clinton

最近,我将一个在PHP 5.6.2上创建的站点转移到了一个使用PHP 7.0.29的新主机上。网站运转良好,前端看起来应该正常,但当我试图访问仪表板时,我看到了白色的死亡屏幕。

Wordpress安装在4.9.5版本是最新的,所有插件在复制站点进行传输时都是最新的。

为了解决此问题,我尝试了以下方法,然后尝试了以下方法:

我检查并增加了PHP的内存限制,禁用了所有插件,但结果保持不变。

接下来,我在wp config中启用了调试模式。php-但未报告任何错误。

define( \'WP_DEBUG\', true );
然后,我用PHP 5.6将该站点安装在另一台服务器上,它运行得很好。

PHP 7是否有可能破坏Wordpress?如果您有任何关于下一步尝试的想法,或者任何遇到类似安装问题的人的建议,我们将不胜感激。

1 个回复
最合适的回答,由SO网友:Clinton 整理而成

经过大量测试和相当大的挫折之后,我发现了这个问题。我将此解决方案包括在内,希望它可以在其他人遇到类似问题时为他们节省大量的挫折。

问题是是否存在PHP结束标记“>;\'在函数中。子主题的php文件。问题不在于结束标记本身,而在于结束标记后的空行甚至空格。这将作为HTML发送到浏览器,并中断Wordpress,因为如果在运行此函数之前向浏览器发送任何内容,header()函数将失败。重定向到登录页面将不起作用,并且没有任何可显示的内容(除了空行或空格),因此将显示WSOD(白色死亡屏幕)。

我想我应该更早地了解这个,但作为使用“”关闭php脚本>;\'是相当标准的做法,我相信可能其他人也会在不经意间遇到类似的问题。它也是very curious that the closing tag on functions.php worked on a server with PHP 5.6 but not on a server with PHP 7. 我接受服务器上的其他设置,但最好的做法是不要在函数中使用结束标记。php文件。

我的建议是,检查你的功能。如果您有一个关闭的phptag,那么将其删除(即使它现在可以工作),因为它是不需要的标记,并且可能会导致以后很难识别的问题。

最后,下面是我的检查列表(按顺序),如果您在移动或更改Wordpress安装后获得WSOD:

检查您的功能。php文件,如果有结束标记,则删除(不需要)在这之后,它应该会工作,因为您回到了Wordpress的基本功能。但是,如果仍然存在问题,请进行调试。

我希望这能帮助并节省其他人很多时间和很多挫折。

结束