【问题标题】:How do I display details of a PHP internal server error?如何显示 PHP 内部服务器错误的详细信息?
【发布时间】:2010-12-17 14:52:02
【问题描述】:

我已将 PHP 应用程序安装到共享托管 Web 服务器上。我收到了500 Internal Server Error。我似乎无权访问任何日志文件,因此我希望错误页面暂时提供错误的详细信息。

【问题讨论】:

    标签: php error-logging


    【解决方案1】:

    尝试:

    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    

    在文件的顶部。

    【讨论】:

    • 同时检查文件权限。通常,如果文件不可执行,它会抛出 500 错误。
    【解决方案2】:

    如果 Jeremy Morgan 的解决方案不起作用,请尝试使用 set_error_handler() 创建您自己的日志文件。通常有关应用程序状态的一些信息($GLOBALS 等)就足够了,但 PHP 会(至少尝试)向您传递有关错误发生位置和错误类型的各种信息。

    另外,尝试使用“分而治之”的调试方法。从大约一半的文件开始,如果它仍然崩溃,则向上扩展,如果它运行到该点,则向下扩展。如果你不想删除你的代码,要么/* comment out */ 要剪切的代码,要么使用__halt_compiler() 特殊指令让PHP 忽略文件中的所有剩余数据。

    最后,让我疯狂尝试修复它的一件事是所谓的Byte Order Mark。 PHP 正在评估文件开头的 BOM,导致它发送输出,并在尝试发送标头等时导致问题。可能不是您的问题,而是值得拥有的知识。

    【讨论】:

    • BOM 的另一个 +1。这让我回到了我刚开始的时候!
    【解决方案3】:

    我怀疑你是从 PHP 中得到这个错误的。在共享主机上,应用程序的默认 .htaccess 配置更有可能导致错误。

    我的猜测是没有 RewriteBase 设置的 mod_rewrite。

    【讨论】:

    • 这完全有可能,而.htaccess通常是我调试时的第一个罪魁祸首,但他从来没有说过他用的是Apache。
    • @Dereleased - PHP + SharedHosting,我只是算了一下。如果是 IIS,我会感到惊讶。
    【解决方案4】:

    查看phpinfo(); 中的值,看看是否有任何突出之处...把它放在代码中的某个位置,它应该会显示一堆 php 版本信息

    【讨论】:

      【解决方案5】:

      “内部服务器错误”不是 PHP 错误(顾名思义)。因此,您要么必须查看服务器日志(您似乎无权访问),要么无法通过 PHP 对其进行任何处理。

      【讨论】:

      • -1,取决于服务器配置和软件 PHP 错误可能会显示为 500s。
      • 正确,实际上出于安全原因,许多共享主机将 php 错误转换为 500 作为抑制的一部分。
      猜你喜欢
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 2021-03-31
      • 1970-01-01
      • 2018-04-03
      • 2017-07-16
      相关资源
      最近更新 更多