我正在尝试使用IIS vrs 8.5和PHP vrs 5.2.17在屏幕上显示PHP错误,但我继续获得IIS 500错误的http页面或空白屏幕。我已经发现了许多SO帖子已经有了修复,但是没有任何内容可以修复我的问题。这是我尝试过的。
目前我在屏幕上显示空白页而不是IIS 500错误。我已经验证display_errors已打开,并且error_reporting是正确的。我也知道php页面运行得很好。我故意通过删除页面上的分号来导致此错误。所以我已经知道一切正常。 PHP错误日志记录也有效,但我希望错误显示在页面上,所以我不必每隔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.exe
和php-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:
因此,我然后去了相应的位置,在这里找到正确的文件:<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中重新启动服务器才能应用更改(从左侧顶部的列表中选择服务器,而不是从左侧,下方选择站点):
现在我看到了错误消息-例如
解析错误:语法错误,第2行的C:\ data \ test.php中出现意外的'='
代替这种类型的一般错误-例如在Chrome上: