在IIS中显示PHP错误

时间:2014-12-22 18:50:01

标签: php iis

我正在尝试使用IIS vrs 8.5和PHP vrs 5.2.17在屏幕上显示PHP错误,但我继续获得IIS 500错误的http页面或空白屏幕。我已经发现了许多SO帖子已经有了修复,但是没有任何内容可以修复我的问题。这是我尝试过的。

  • 将errorMode更改为Detailed。仍然得到500错误页面而不是PHP错误。
  • 删除了“httpErrors”块下默认IIS配置文件中的所有自定义错误。仍然获得IIS自定义500错误页面。
  • 在默认IIS配置中将existingResponse =“PassThrough”添加到我的httpErrors块。这样做会导致我得到一个空白页而不是php错误,或IIS 500错误。
  • 我已经确认在网站默认的system.config文件中没有覆盖这些设置。

目前我在屏幕上显示空白页而不是IIS 500错误。我已经验证display_errors已打开,并且error_reporting是正确的。我也知道php页面运行得很好。我故意通过删除页面上的分号来导致此错误。所以我已经知道一切正常。 PHP错误日志记录也有效,但我希望错误显示在页面上,所以我不必每隔5分钟查看一次错误日志。

还有什么可能导致这种情况?

5 个答案:

答案 0 :(得分:5)

IF 您在网站和服务器的Detailed功能设置中将自定义错误设置为error pages

AND 如果在php.ini文件中设置了display_errors = on& error_reporting = E_ALL

然后只有一种可能性[IIS默认500错误页面]是“您的PHP无法正常运行错误配置。”

所需的配置为:

Handler Mappings设置为您的php-cgi.exe文件(在您的php安装目录中)作为FastCGI后,打开php.ini文件并编辑以下行,如果未找到则添加在档案中。 (如果PHP安装目录中不存在php.ini,则从现有的php.ini-development或php.ini-production重命名)

1)extension_dir = "ext\"

; ext文件夹将在PHP安装中,如果没有创建,不要忘记结束\

2)log_errors = On

3)error_log = "C:\inetpub\temp\php-errors.log"

4)cgi.force_redirect = 0

可能你需要添加这一行将它添加到任何地方,例如 - 之前';文件上传;'

5)cgi.fix_pathinfo = 1

6)fastcgi.impersonate = 1

7)fastcgi.logging = 0

 Be careful and there should not `;` before any of these lines.

请参阅documentation - installing/configuring PHP

即使在正确配置之后,由于系统损坏,PHP可能无法正常工作。您可以通过双击php-cgi.exephp-win.exe来检查它是否应该在没有正确错误的情况下运行(其他警告或ext/fileName...缺少消息 - 这些都没问题。)

注意:在这些许多其他设置之后需要运行php的所有内容(例如会话),但是通过这些简单的PHP将会工作或PHP将正确显示错误的错误(NOT 500页)。

答案 1 :(得分:1)

确保您正在编辑正确的php.ini文件。要检查需要编辑的文件,请转到IIS>处理程序映射并寻找PHP。然后检查它们所在的目录。

在我的情况下,我有两个目录并且正在编辑错误的php.ini文件,这就是我无法显示错误的原因。

答案 2 :(得分:1)

我遇到了类似的问题,导致500错误而不是PHP错误。我通过访问IIS中的PHP管理器来修复此问题

在“PHP设置”下,单击“配置错误报告”。这将允许您在开发和生产机器之间进行选择。如果您选择Production,您将在浏览器中没有得到详细的PHP错误,您只会得到一个日志文件。开发将允许显示和写入日志文件。

我希望这会有所帮助。

答案 3 :(得分:0)

在服务器配置功能视图下,您会看到fast-cgi设置, 双击它。你看到php-cgi.exe。双击它。将标准错误模式设置为IgnoreAndReturn200。

问候

答案 4 :(得分:0)

我一直在努力解决这个问题-我的PHP处理程序映射设置如下,确认我正在使用PHP 5.3:

enter image description here

因此,我然后去了相应的位置,在这里找到正确的文件:<input type="checkbox" key={id} id={id} onClick={this.checkboxClick}/> 并编辑了C:\Program Files (x86)\PHP\v5.3

起初看起来像这样:

php.ini

我将其更改为此:

; error_reporting
;   Default Value: E_ALL & ~E_NOTICE
;   Development Value: E_ALL | E_STRICT
;   Production Value: E_ALL & ~E_DEPRECATED

我必须在IIS中重新启动服务器才能应用更改(从左侧顶部的列表中选择服务器,而不是从左侧,下方选择站点):

enter image description here

现在我看到了错误消息-例如

解析错误:语法错误,第2行的C:\ data \ test.php中出现意外的'='

代替这种类型的一般错误-例如在Chrome上:

enter image description here