在 Ubuntu 上设置 PHP 日志,主要涉及 PHP-FPM 或 Apache/Nginx + PHP 两种常见场景。下面按常见情况给你一个完整说明。
PHP 日志一般分为两类:
error_log()、file_put_contents() 等写入Ubuntu 默认使用 PHP-FPM,配置文件通常在:
/etc/php/8.x/
其中 8.x 可能是 8.1、8.2、8.3 等。
常见目录结构:
/etc/php/8.x/
├── cli/php.ini
├── fpm/php.ini
├── fpm/pool.d/www.conf
php.ini编辑 PHP-FPM 的 php.ini:
sudo nano /etc/php/8.x/fpm/php.ini
重点修改以下参数:
display_errors = Off
log_errors = On
error_reporting = E_ALL
error_log = /var/log/php/php_error.log
✅ 生产环境建议
display_errors = Off
sudo mkdir -p /var/log/php
sudo chown www-data:www-data /var/log/php
sudo chmod 755 /var/log/php
sudo systemctl restart php8.x-fpm
PHP-FPM 还可以在 pool 配置中单独设置日志。
编辑:
sudo nano /etc/php/8.x/fpm/pool.d/www.conf
添加或修改:
php_admin_value[error_log] = /var/log/php/www_error.log
php_admin_flag[log_errors] = on
重启:
sudo systemctl restart php8.x-fpm
如果你使用的是 Apache + mod_php:
sudo nano /etc/php/8.x/apache2/php.ini
设置同上:
log_errors = On
error_log = /var/log/php/php_error.log
然后重启 Apache:
sudo systemctl restart apache2
| 类型 | 日志位置 |
|---|---|
| Nginx 访问日志 | /var/log/nginx/access.log |
| Nginx 错误日志 | /var/log/nginx/error.log |
| PHP 错误日志 | /var/log/php/php_error.log |
⚠️ Nginx 不会直接记录 PHP 错误
创建测试文件:
<?php
error_log("This is a test PHP error log");
undefined_function();
访问该页面后查看日志:
tail -f /var/log/php/php_error.log
CLI 使用不同配置:
php -i | grep "Loaded Configuration File"
通常是:
/etc/php/8.x/cli/php.ini
CLI 日志一般输出到 stderr,或单独设置 error_log。
log_errors = On查看当前加载的 php.ini:
phpinfo();
display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_NOTICE
error_log = /var/log/php/php_error.log
如果你愿意,可以告诉我:
我可以给你一份 完全针对你环境的配置方案。