Ubuntu系统中PHP日志配置文件的位置及配置方法
Ubuntu系统中,PHP的配置文件php.ini的位置取决于PHP的运行模式(命令行、Apache、Nginx+PHP-FPM)。通过以下命令可快速定位:
php --ini
输出结果会明确显示当前模式下的php.ini路径,常见路径如下:
/etc/php/{php_version}/cli/php.ini(如/etc/php/8.1/cli/php.ini);/etc/php/{php_version}/apache2/php.ini(如/etc/php/8.1/apache2/php.ini);/etc/php/{php_version}/fpm/php.ini(如/etc/php/8.1/fpm/php.ini)。{php_version}需替换为实际安装的PHP版本(如7.4、8.0、8.1等)。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
若使用Nginx作为Web服务器并搭配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
若需要记录PHP脚本的访问日志(而非仅错误日志),需修改Web服务器的配置:
/etc/apache2/sites-available/000-default.conf或对应的虚拟主机配置中,添加CustomLog指令(如CustomLog ${APACHE_LOG_DIR}/access.log combined),其中${APACHE_LOG_DIR}通常为/var/log/apache2;/etc/nginx/sites-available/default或对应的服务器块配置中,添加access_log指令(如access_log /var/log/nginx/access.log;)。修改完配置文件后,需重启对应的Web服务或PHP-FPM服务:
sudo systemctl restart apache2;sudo systemctl restart nginx + sudo systemctl restart php{php_version}-fpm(如sudo systemctl restart php8.1-fpm)。通过创建测试脚本(如info.php,内容为<?php phpinfo(); ?>)访问页面,或在脚本中主动触发错误(如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错误日志