【问题标题】:PHP warnings cause script to halt on IIS running FastCGIPHP 警告导致脚本在运行 FastCGI 的 IIS 上停止
【发布时间】:2010-09-30 01:11:25
【问题描述】:

我们正在迁移到运行 Windows 2003 和 IIS 6 的新服务器。当我的 PHP 代码运行时,它会在特定行上出现警告(我目前期待但很快会修复)。但是,当它遇到警告时,它会立即停止处理并在 HTTP 标头中返回 500 错误。通常,我希望 PHP 输出警告,但继续处理脚本。

IIS、FastCGI 或 PHP 的配置中是否存在在 PHP 遇到警告时会返回 500 错误的内容?

澄清一下:我不想隐藏警告;我希望他们展示。我不希望脚本停止处理警告。

【问题讨论】:

    标签: php iis-6 windows-server-2003 fastcgi


    【解决方案1】:

    我不知道 IIS 或 FastCGI,但 afaik php 没有这样的选项。但是,您可以将error_reporting(在您的php.ini)设置为

    E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
    

    使警告消失。

    【讨论】:

      【解决方案2】:

      这也很大程度上取决于您的 PHP 代码,如果您在代码中执行一些复杂的操作并发生错误,Web 服务器有时会抛出 500 错误。我建议你:

      1. @ 放在该行以抑制错误,即:

        $x=@my_function($y);

      2. 查看您的网络服务器日志以了解您收到的确切错误消息,然后在此处发布,或许我们可以为您提供更好的解决方案。

      【讨论】:

        【解决方案3】:

        解决了这个问题。 php.ini 中的log_errors 设置为On,但未设置error_log。这导致 PHP 停止一切。将display_errors 设置为on 后,现在会显示警告,以便我可以看到输出中出现问题的地方。

        这个帖子很有帮助:http://forums.iis.net/p/1146102/1856222.aspx#1856222

        【讨论】:

        • 那么,您将error_log 设置为什么?请在您的回答中加入这一点以帮助他人。
        • @MathiasLykkegaardLorenzen 你可以设置error_log = syslog
        • 来自 Google 的任何人。您只需取消注释 php.init 中的 error_log 行。对于 Windows,它默认为 syslog,它将错误记录到事件日志中。
        猜你喜欢
        • 1970-01-01
        • 2010-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-27
        • 2013-05-14
        • 1970-01-01
        相关资源
        最近更新 更多