php白屏死机

时间:2013-10-28 01:41:45

标签: php mysql apache pdo

我浏览了其他几个问题,并尝试了与错误报告相关的各种解决方案,包括

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文件),我只是想避免任何由于问题的性质而任意的。关于从何处开始的任何建议(即不同的错误报告方法等)?

2 个答案:

答案 0 :(得分:0)

大多数情况下,当我们从WAMP转移到LAMP时出现错误时,这是​​一个区分大小写的问题。由于Windows不是CS,但Linux可以打破很多。

我会:

  • 检查正在执行的课程/页面上的案例
  • 检查.htaccess规则(或暂时删除它们)以检查是否存在错误

答案 1 :(得分:0)

我也曾经遇到过几次PHP的白屏死机。根据我的经验,您可以做的最有用的事情之一就是确保PHP使用php.ini中的error_log指令登录到文件:http://us1.php.net/manual/en/errorfunc.configuration.php#ini.error-log

如果您仍然没有在您定义的PHP错误日志中看到任何有用的信息,或者在Apache错误日志中,可能是时候通过您的代码添加调试输出来识别致命错误的点发生。为此,您可以打开文件句柄并定期自行写入,或者只使用error_log()函数输出调试消息。