【问题标题】:White screen of death!白屏死机!
【发布时间】:2011-02-24 05:47:36
【问题描述】:

在调试安装到新开发环境中的 codeigniter 应用程序后,当我看到没有更多可用的白屏时,我开始吓坏了。我已经能够解决导致此问题的每一个错误,但它花费的时间太长了。

PHP error_reporting(E_ALL) & display_errors", 1 也已设置。我什至安装了 Xdebug 以希望获得更多输出,但没有。我的日志记录设置也正常工作,但没有任何内容写入日志。

有没有办法打印出信息丰富的东西而不是完整的白屏?这肯定会缩短我在解决导致此问题的最终错误上所花费的时间?

非常感谢!

参考: Why does Code Igniter give me a white page?

【问题讨论】:

    标签: php codeigniter error-handling wsod


    【解决方案1】:

    如果出现致命的编译错误,那么您很可能会得到一个空白页。 尝试做一个

    php -l <filename.php>
    

    反对你的剧本

    【讨论】:

    • 非常感谢您的帮助。运行这个时我根本没有得到任何输出:(
    • 当你运行命令行 php -l 时你应该得到一些输出,即使它是“在 中没有检测到语法错误”
    【解决方案2】:

    查看/index.php 的顶部附近以调用error_reporting() - 并确保它不会将您的php.ini 配置更改为其他配置(E_ALL 除外)。

    由于您没有提及您的php.ini 配置,请检查以确保您也有error_reporting = E_ALL

    【讨论】:

    • 嗨! E_ALL 在 index.php 和 php.ini 中都设置了
    • 可能有点牵强,但是当你查看源代码时有什么东西吗?
    • 现在我正在关注
      。我没有在我的项目中使用任何 
       标记,所以可能是 Xdebug 导致了 html 格式化?
    【解决方案3】:

    我发现,自从我提出问题以来,似乎没有什么可以确保 PHP 总是输出错误,这似乎会在这里和那里抛出白屏。无论 PHP 的 ini 设置如何。

    我发现最好的解决方法是使用以下行来确保将错误记录放入应用程序易于访问和监控的文件中:

    ini_set('error_log', MYPATH .'logs/errorlog.log'); 
    

    据我测试,当出现白屏时,它也会被记录到这个错误日志中。似乎是了解出现问题时会发生什么的最简单方法。

    【讨论】:

      【解决方案4】:

      grep 'error_reporting' 和 'display_errors' 的文件,应用程序可能会在某处将其关闭。

      另外,为了能看到解析错误,需要在php.ini文件或者.htaccess文件中设置error_reporting/display_errors,在脚本文件中设置是不行的,会导致白页你描述是否有解析错误。

      【讨论】:

      • 嗨,已经完成了。 error_reporting = E_ALL | E_STRICT (? 我认为?) & display_errors=1 设置在 php.ini....
      • 你确定你正在查看的文件被执行了吗?你能在顶部放一个 die('Hello world') 并观察输出吗?
      【解决方案5】:

      最好有一个可能导致此问题的常见问题的清单,因为 CI 的默认值已经是

      error_reporting(E_ALL);
      
      1. 同名控制器和模型
      2. 使用保留字作为方法

      名单还在继续……

      【讨论】:

      • 嗨!是的,我对出现白屏的原因有了一个线索,问题更多的是关于是否有任何好的方法可以防止它们变成白色并输出错误......
      【解决方案6】:

      除了发布的所有其他内容外,还要确保使用@(错误抑制运算符)屏蔽的内容不会引发致命错误。

      【讨论】:

      • 这个答案救了我的命
      【解决方案7】:

      考虑设置PHP's error_log configuration variable——当您在不知情的情况下设置代码error_reporting() 时会很有帮助。然后您可以检查错误日志并查看发生了哪些错误(如果有)。

      【讨论】:

      • 错误日志已设置并正常工作,但如果出现白屏死机,则不输出任何内容...
      • 嗯...我不确定还有什么尚未建议的建议。对不起:-/
      • 如果某些东西严重破坏了 PHP 本身死机并且无法记录任何内容,它可能会被记录到网络服务器自己的 error_log 中。
      【解决方案8】:

      确保 /system 中的日志和缓存文件夹已更改为 777。

      【讨论】:

        【解决方案9】:

        我在新安装的服务器上遇到了这个问题。德比安 7。 我启用了日志记录、错误报告、禁用 gzip 等等。

        但是,我的 PHP 安装没有启用 MySQL。 启用 MySQL 对我有用。

        【讨论】:

          【解决方案10】:

          确保在 CI 缓冲区之外的文件输出中没有空格,尤其是在启用压缩的情况下。您可以通过在 CI 配置文件中关闭压缩来测试这一点。

          请参阅第二步:http://codeigniter.com/user_guide/installation/upgrade_141.html(请注意,虽然这是用于升级,但它包含解释问题的配置文件的 sn-p。)

          【讨论】:

          • 文件中没有空格且 GZIP 已关闭!
          • 在某种程度上,这是一个遗憾,因为它本来是一个简单的修复!祝你好运。请注意其他有相同问题的读者:此解决方案可能仍然可以解决您的问题!
          【解决方案11】:

          您是否碰巧在控制器内为该特定方法创建了一个缓存输出。因为如果是这样,那么它可能会创建页面的缓存版本,实际上该页面甚至没有运行。缓存的错误输出页面正在显示。 请检查应用程序内的缓存文件夹。它应该只包含 index.html 文件。

          【讨论】:

            猜你喜欢
            • 2012-01-03
            • 1970-01-01
            • 1970-01-01
            • 2013-11-20
            • 2017-06-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-25
            相关资源
            最近更新 更多