我浏览了其他几个问题,并尝试了与错误报告相关的各种解决方案,包括
ini_set('display_errors',true);
error_reporting(E_ALL);
但我仍然坚持死亡的白色屏幕。当我使用自己的面向对象的类时,这似乎只发生在页面上。但是,OOP脚本成功执行,但我无法显示HTML。偶尔,我可以让它捕获异常,但它是间歇性的。
例如,我有一个这样的方法:
public function getSubdomain() {
$this->data->query('SELECT * FROM users WHERE email=:email');
$this->data->bind(':email', $this->email);
$this->data->execute();
if($this->data->rowCount() == 0)
throw new Exception('There is no account associated with this e-mail address.');
$curr = $this->data->single();
return $curr['subdomain'];
}
^^这将执行得很好,我可以使用die($curr['subdomain']);
从OOP类中进行打印,但是如果我尝试使用PHP在页面上显示它,那么什么都没有。没有错误,所以日志,没有源代码,绝对没有。
我在Apache上使用MultiViews,我的数据库查询是使用自定义PDO类完成的。
我跑了
# php -l new.php
直接在服务器上报告
No syntax errors detected in new.php
当我在本地WAMP上运行完全相同的设置时,它没有问题,但是一旦我迁移到我的CentOS / Apache / PHP机器,一切都崩溃了。 MySQL是在一个单独的服务器上,但没有问题。
我可以根据需要提供更具体的代码(来自服务器的我自己的和conf文件),我只是想避免任何由于问题的性质而任意的。关于从何处开始的任何建议(即不同的错误报告方法等)?
答案 0 :(得分:0)
大多数情况下,当我们从WAMP转移到LAMP时出现错误时,这是一个区分大小写的问题。由于Windows不是CS,但Linux可以打破很多。
我会:
答案 1 :(得分:0)
我也曾经遇到过几次PHP的白屏死机。根据我的经验,您可以做的最有用的事情之一就是确保PHP使用php.ini中的error_log指令登录到文件:http://us1.php.net/manual/en/errorfunc.configuration.php#ini.error-log
如果您仍然没有在您定义的PHP错误日志中看到任何有用的信息,或者在Apache错误日志中,可能是时候通过您的代码添加调试输出来识别致命错误的点发生。为此,您可以打开文件句柄并定期自行写入,或者只使用error_log()函数输出调试消息。