PHP 将所有错误记录到日志文件以获取详细信息
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 或 Unix 终端 |
类别 | Web 服务器 |
操作系统兼容性 | BSD • Linux • Unix |
预计阅读时间 | 3 分钟 |
找出 php.ini 的路径
流行的类unix系统的默认路径如下:
- CentOS Linux/RHEL v5.x/6.x/7.x/8.x/9.x:/etc/php.ini
- Ubuntu / Debian Linux(PHP 7 fpm):/etc/php/7.0/fpm/php.ini
- Ubuntu / Debian Linux(PHP 5.6 fpm):/etc/php/5.6/fpm/php.ini
- Ubuntu / Debian Linux(PHP 8.1 fpm):/etc/php/8.1/fpm/php.ini
- Ubuntu / Debian Linux(带有 Apache 2 的 PHP 7):/etc/php/5.6/apache2/php.ini
- Ubuntu / Debian Linux(带有 Apache 2 的 PHP 5.6):/etc/php/7/apache2/php.ini
- FreeBSD unix 服务器 v9.x/10.x/11.x/12.x/13.x+:/usr/local/etc/php.ini
您可以使用以下命令来查找 php.ini 的路径。例如:
# php5-cgi -i | grep php.ini
示例输出:
<tr><td class="e">Loaded Configuration File </td><td class="v">/etc/php5/cgi/php.ini </td></tr>
# php-fpm5.0 -i | grep php.ini
# php-fpm7.0 -i | grep php.ini
# php-fpm8.1 -i | grep php.ini
来自我的Ubuntu LTS 22.04 服务器上的PHP 版本8.1
的示例输出:
Configuration File (php.ini) Path => /etc/php/8.1/fpm Loaded Configuration File => /etc/php/8.1/fpm/php.ini
如何将所有 php 错误记录到日志文件?
只需添加以下行即可/etc/php.ini将错误记录到指定文件,例如 /var/log/php-scripts.log 或 /var/log/httpd/php-error.log。例如,使用文本编辑器,如 vi/vim 或 nano:
# vi /etc/php.ini
查找并修改error_log指令,如下所示:
error_log = /var/log/php-scripts.log
确保display_errors设置为 Off(最终用户不会收到错误):
display_errors = Off
保存并关闭文件。重新启动Apache Web 服务器或重新启动 php7-fpm/php5-fpm 服务,具体操作如下,具体取决于您的发行版本:
# /etc/init.d/httpd restart
或
# systemctl restart httpd
或
$ sudo systemctl restart php7.0-fpm.service
或
$ sudo systemctl restart php-fpm
如何将错误记录到 syslog 或 Windows Server 事件日志?
修改error_log如下:
error_log = syslog
我如何查看日志?
使用 ssh 登录或使用 sftp 客户端下载日志文件 /var/log/php-scripts.log。例如,使用 tail 命令如下:
$ sudo tail -f /var/log/php-scripts.log
示例输出:
图01:PHP错误日志输出
$ df -h /var/log/
$ sudo du -chs /var/log
关于 php-fpm 用户的说明
您需要编辑 php-fpm 配置文件,例如 /etc/php81/php-fpm.d/www.conf。附加以下行:
php_flag[display_errors] = off php_admin_value[error_log] = /var/log/nginx/php.error.log php_admin_flag[log_errors] = on
# /etc/init.d/php-fpm81 restart
## OR use the service command ##
# service php-fpm81 restart
* Stopping PHP FastCGI Process Manager ... [ ok ] * Checking /etc/php81/php-fpm.conf ... * Starting PHP FastCGI Process Manager ... [ ok ]
总结
这就是使用 PHP 服务器端编程语言时将所有错误消息记录到日志文件的方法。这对于在 Linux、BSD 和类 Unix 云服务器下用 PHP 创建的 Web 应用程序的问题进行故障排除非常有用。