在 Ubuntu 上,PHP 的日志是可以自定义的,但具体“怎么自定义”取决于你想改的是什么层面。下面按常见场景给你说明:
php.ini找到你的 php.ini(位置可能是):
/etc/php/8.1/apache2/php.ini
/etc/php/8.1/cli/php.ini
/etc/php/8.1/fpm/php.ini
常见自定义项:
; 是否记录错误
log_errors = On
; 自定义日志文件路径
error_log = /var/log/php/php_errors.log
; 错误级别
error_reporting = E_ALL
改完后:
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm
✅ 这是“自定义 PHP 日志位置”的标准方式
在虚拟主机里:
php_value error_log /var/log/php/site1_error.log
php_value log_errors On
在 pool 配置里:
; /etc/php/8.1/fpm/pool.d/www.conf
php_admin_value[error_log] = /var/log/php/site1.log
php_admin_value[log_errors] = On
CLI 用的是另一个 php.ini:
php -i | grep php.ini
也可以临时指定:
php -d error_log=/tmp/cli.log script.php
PHP 本身不支持像 Nginx/Apache 那样定义“日志格式”,但你可以:
error_log() 写自定义内容error_log("[" . date('Y-m-d H:i:s') . "] 用户登录失败: " . $user);
composer require monolog/monolog
$log = new Monolog\Logger('app');
$log->pushHandler(new Monolog\Handler\StreamHandler('/var/log/app.log'));
$log->info('自定义日志内容');
error_log = syslog
然后看:
journalctl -t php
# 或
/var/log/syslog
| 需求 | 是否支持 |
|---|---|
| 自定义日志路径 | ✅ |
| 按站点分日志 | ✅ |
| 自定义日志格式 | ❌(需代码或 Monolog) |
| CLI 单独日志 | ✅ |
如果你能说清楚:
我可以给你更精确的配置示例。