在 Ubuntu 上,PHP 日志的权限设置通常涉及 日志文件本身、Web 服务器用户、PHP 运行方式(FPM / CLI / Apache module)。下面按常见场景说明。
ps aux | grep php-fpm
通常是:
www-data(Apache/Nginx 默认)ps aux | grep apache2
用户也是:
www-data通常是当前登录用户(如 ubuntu)
| 类型 | 路径示例 |
|---|---|
| PHP-FPM 错误日志 | /var/log/php{version}-fpm.log |
| Nginx + PHP 错误 | /var/log/nginx/error.log |
| Apache + PHP | /var/log/apache2/error.log |
| 自定义 PHP 日志 | /var/log/php/php_errors.log |
sudo mkdir -p /var/log/php
sudo chown -R www-data:www-data /var/log/php
sudo chmod 755 /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 644 /var/log/php/php_errors.log
✅ 解释:
644:所有者可写,组和其他只读www-data:PHP 能写,系统更安全log_errors = On
error_log = /var/log/php/php_errors.log
修改后重启:
sudo systemctl restart php8.1-fpm
# 或
sudo systemctl restart apache2
如果日志写不进去:
sudo aa-status
可临时测试:
sudo systemctl stop apparmor
⚠️ 生产不建议关闭,应写规则。
sudo chown www-data:adm /var/log/nginx/error.log
sudo chmod 640 /var/log/nginx/error.log
sudo chown root:adm /var/log/apache2/error.log
sudo chmod 640 /var/log/apache2/error.log
ls -l /var/log/php
sudo -u www-data touch /var/log/php/test.log
❌ 不推荐:
chmod 777 /var/log/php
✅ 正确做法:
✅ 使用专用目录
✅ 属主为 www-data
✅ 权限 755 / 644
✅ 不要 777
✅ 日志定期 rotate(logrotate)
如果你愿意,可以告诉我:
我可以给你精确命令。