4

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

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'];
    }

^^ 那将执行得很好,我可以使用它从 OOP 类中打印它die($curr['subdomain']);,但是如果我尝试使用 PHP 在页面上显示它,什么也没有。没有错误,所以日志,没有源代码,绝对没有。

我在 Apache 中使用 MultiViews,我的 DB 查询是使用自定义 PDO 类完成的。

我跑了

# php -l new.php

直接在服务器上并报告

No syntax errors detected in new.php

当我在本地的 WAMP 上运行完全相同的设置时,它可以毫无问题地工作,但是一旦我迁移到我的 CentOS/Apache/PHP 机器上,一切就乱套了。MySQL 在单独的服务器上,但没有问题。

我可以根据需要提供更具体的代码(我自己的和来自服务器的 conf 文件),我只是想避免由于问题的性质而出现任何随意性。关于从这里去哪里的任何建议(即,不同的错误报告方法等)?

4

2 回答 2

0

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

我会:

  • 检查正在运行的类/页面上的案例
  • 检查 .htaccess 规则(或暂时删除它们)以检查是否存在错误
于 2013-10-28T15:59:29.963 回答
0

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

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

于 2013-11-02T19:49:46.503 回答