在 Ubuntu 上设置 PHP 日志权限,通常涉及 日志文件位置、所属用户、目录权限、PHP 配置 等方面。下面按常见场景给你一个清晰、可操作的说明。
php --ini
常见配置项:
error_log = /var/log/php/php_errors.log
log_errors = On
如果是 PHP-FPM:
/etc/php/8.x/fpm/php.ini
/etc/php/8.x/fpm/pool.d/www.conf
| 环境 | 用户 |
|---|---|
| Apache (mod_php) | www-data |
| PHP-FPM | www-data |
| CLI | 当前登录用户 |
查看:
ps aux | grep php-fpm
sudo mkdir -p /var/log/php
sudo chown -R www-data:www-data /var/log/php
sudo chmod 0755 /var/log/php
sudo touch /var/log/php/php_errors.log
sudo chown www-data:www-data /var/log/php/php_errors.log
sudo chmod 0644 /var/log/php/php_errors.log
log_errors = On
error_log = /var/log/php/php_errors.log
修改后重启服务:
# PHP-FPM
sudo systemctl restart php8.2-fpm
# Apache
sudo systemctl restart apache2
确保:
fastcgi 不拦截 stderrcatch_workers_output = yes(可选); www.conf
catch_workers_output = yes
tail -f /var/log/php/php_errors.log
# Permission denied
✅ 解决:
sudo chown www-data:www-data /var/log/php/php_errors.log
chmod 0777 /var/log/php
❌ 不推荐
✅ 推荐:
chmod 0755 /var/log/php
sudo nano /etc/logrotate.d/php
示例:
/var/log/php/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0644 www-data www-data
}
www-data<?php
trigger_error("test log", E_USER_NOTICE);
如果你能告诉我:
我可以给你 完全针对性的配置命令。