iis 输出php错误

IIS输出PHP错误:全面指南

在IISWeb服务器上托管PHP网站时,正确配置错误报告和日志记录至关重要。此指南将深入探讨IIS中输出PHP错误的不同方式,以便您能够有效地调试和解决任何问题。

如何在IIS中输出PHP错误

1.使用php.ini配置

在PHP.ini配置文件中,您可以使用`display_errors`和`log_errors`指令来控制PHP错误的显示和日志记录:

ini

display_errors=On

log_errors=On

display_errors:将错误直接输出到Web页面。

log_errors:将错误写入到由`error_log`指令指定的日志文件中。

2.使用.htaccess文件

如果您无法访问php.ini文件,可以在`.htaccess`文件中添加以下行:

htaccess

php_flagdisplay_errorsOn

php_flaglog_errorsOn

3.使用IIS错误页

IIS提供了一种使用自定义错误页显示PHP错误的方法。为此,请执行以下步骤:

1.在IIS管理器中,导航到要配置的网站。

2.双击“错误页”图标。

3.在“选择要向其添加自定义错误页的HTTP状态代码”下,选择状态代码500。

4.单击“编辑功能”,然后选择“详细错误”。

5.在“自定义错误页”文本框中,输入以下代码:

ini_set('display_errors',1);

ini_set('error_reporting',E_ALL);

phpinfo();

?>

4.使用自定义脚本

您可以编写自定义脚本来显示和日志记录PHP错误。例如,以下脚本将错误输出到文本文件:

php

error_reporting(E_ALL);

ini_set('display_errors',1);

ini_set('log_errors',1);

ini_set('error_log','errors.txt');

//触发错误

trigger_error('这是错误消息',E_USER_ERROR);

?>

PHP错误日志记录

PHP错误日志记录是调试和解决问题的宝贵工具。IIS提供了多种选项来记录PHP错误:

1.使用php.ini配置

`error_log`指令指定将错误写入到的日志文件的路径。例如:

ini

error_log=C:\logs\php_errors.log

2.使用.htaccess文件

您可以使用`.htaccess`文件中的`php_value`指令来设置`error_log`:

htaccess

php_valueerror_logC:\logs\php_errors.log

3.使用IIS日志记录

IIS日志记录可以捕获PHP错误。为此,请执行以下步骤:

1.在IIS管理器中,导航到要配置的网站。

2.双击“日志记录”图标。

3.在“选择要记录的日志文件类型”下,选择“W3C扩展日志文件”。

4.将以下行添加到“自定义日志记录”文本框:

Fields:datetimec-ipcs-usernames-ips-portcs-methodcs-uri-stemcs-uri-querys-portcs-usernamec-ipcs-methodcs-uri-stemcs-uri-querys-port

%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t%{%time:yyyy-MM-ddHH:mm:ss}t

禁用PHP错误显示

在生产环境中,通常需要禁用PHP错误显示以防止敏感信息泄露。为此,请执行以下步骤:

1.在IIS管理器中,导航到要配置的网站。

2.右键单击“处理程序映射”图标,然后选择“添加脚本映射”。

3.在“请求路径”字段中,输入".php"。

4.在“可执行文件”字段中,输入PHP可执行文件的路径(例如,`C:\PHP\php-cgi.exe`)。

5.在“名称”字段中,输入处理程序的名称(例如,“PHPFastCGI”)。

6.在“约束”选项卡中,选择“仅文件”。

7.在“操作”选项卡中,选择“快速CGI”。

8.在“应用程序设置”部分中,单击“设置”。

9.在“环境变量”部分中,添加以下变量:

PHP_FLAG_DISPLAY_ERRORS=Off

10.单击“确定”三次以保存更改。

故障排除

如果PHP错误未显示:

确保启用了`display_errors`和`error_reporting`指令。

检查PHP.ini文件或.htaccess文件中的拼写错误。

确保PHP可执行文件已正确配置。

如果PHP错误写入到错误日志文件:

检查日志文件是否受写保护。

确保PHP可写错误日志文件。

检查日志文件的路径是否正确。

如果PHP错误显示在IIS错误页面上:

检查IIS错误页的配置是否正确。

确保自定义脚本无语法错误。