Ubuntu 系统中 PHP 日志配置文件的路径与设置方法详解

一、PHP 核心配置文件(php.ini)的存放位置
在 Ubuntu 系统下,PHP 的配置文件 php.ini 具体位于何处?这取决于 PHP 的运行模式——是命令行模式、Apache 模块模式,还是 Nginx 搭配 PHP-FPM 模式。想快速定位当前位置?直接执行以下命令即可:
php --ini
命令输出会明确显示当前运行模式下 php.ini 的实际路径。常见情况包括:
- 命令行模式(CLI):路径通常为
/etc/php/{php_version}/cli/php.ini,例如/etc/php/8.1/cli/php.ini; - Apache 模式:对应
/etc/php/{php_version}/apache2/php.ini; - Nginx + PHP-FPM 模式:对应
/etc/php/{php_version}/fpm/php.ini。
注意,其中的 {php_version} 需要替换为你实际安装的 PHP 版本号,如 7.4、8.0、8.1 等。
二、PHP 错误日志配置(核心日志设置)
PHP 错误日志的记录主要依赖于 php.ini 中的几个关键参数。编辑对应模式下的 php.ini 文件,重点配置如下:
- 启用错误日志记录:去掉
log_errors前面的分号,并将其值设为On,表示开启错误日志功能。 - 设置日志文件保存路径:修改
error_log参数为你希望存放的路径,例如/var/log/php_errors.log。务必确保 PHP 进程对该目录拥有写入权限——可通过sudo chown www-data:www-data /var/log/php_errors.log进行授权,www-data是 Apache 或 Nginx 的默认运行用户。 - 指定错误报告级别:通过
error_reporting参数控制要记录的错误类型。生产环境建议使用E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED(记录所有严重错误,但忽略提示性信息),开发环境则可直接使用E_ALL(记录所有错误)。 - 禁止在浏览器中显示错误:将
display_errors设为Off,避免敏感信息泄露——生产环境必须关闭此选项。
举例来说,在 /etc/php/8.1/apache2/php.ini 中,配置内容可以写成:
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
三、PHP-FPM 日志配置(Nginx 场景)
如果你使用的是 Nginx 搭配 PHP-FPM,除了 php.ini 中的错误日志配置外,还需要调整 PHP-FPM 自身的配置文件。该文件通常位于 /etc/php/{php_version}/fpm/php-fpm.conf 或 /etc/php/{php_version}/fpm/pool.d/www.conf。需要设置 PHP-FPM 的运行日志:
- 错误日志:去掉
error_log前的分号,并指定路径,例如/var/log/php-fpm/error.log。 - 访问日志:去掉
access.log前的分号,设置路径,例如/var/log/php-fpm/access.log,用于记录 PHP-FPM 处理的请求信息。
示例配置(/etc/php/8.1/fpm/pool.d/www.conf):
error_log = /var/log/php-fpm/error.log
access.log = /var/log/php-fpm/access.log
四、Web 服务器访问日志配置(可选)
如果你需要记录 PHP 脚本的访问日志(不仅仅是错误日志),则需要修改 Web 服务器的配置文件:
- Apache:在
/etc/apache2/sites-available/000-default.conf或对应的虚拟主机配置中,添加CustomLog指令,例如CustomLog ${APACHE_LOG_DIR}/access.log combined。这里的${APACHE_LOG_DIR}通常指向/var/log/apache2。 - Nginx:在
/etc/nginx/sites-available/default或对应的服务器块配置中,添加access_log指令,例如access_log /var/log/nginx/access.log;。
五、使配置生效
修改完所有配置文件后,别忘了重启对应的 Web 服务或 PHP-FPM 服务:
- Apache:
sudo systemctl restart apache2 - Nginx + PHP-FPM:
sudo systemctl restart nginx加上sudo systemctl restart php{php_version}-fpm(例如sudo systemctl restart php8.1-fpm)。
六、验证日志配置
配置是否成功生效?最简单的方法就是创建一个测试脚本,例如 info.php,内容为 ,然后访问该脚本。或者直接在脚本中主动触发一个错误,例如 trigger_error("Test error", E_USER_ERROR);。接着检查日志文件是否已生成:
tail -f /var/log/php_errors.log # 查看 PHP 错误日志
tail -f /var/log/php-fpm/error.log # 查看 PHP-FPM 错误日志(Nginx 场景)
tail -f /var/log/apache2/error.log # 查看 Apache 错误日志