在 Ubuntu 上,PHP 日志写不进去 / 权限报错是很常见的问题,通常和 Web 服务用户、目录权限、SELinux/AppArmor 有关。下面按「最常见 → 进阶」给你一套排查和解决思路。
ps aux | grep -E 'nginx|apache|php-fpm'
常见用户:
www-datawww-dataubuntu)failed to open stream: Permission denied
ls -ld /var/log/php
ls -l /var/log/php/php-error.log
sudo chown -R www-data:www-data /var/log/php
sudo chmod 755 /var/log/php
sudo chmod 644 /var/log/php/*.log
⚠️ 不要用
777,不安全
php -i | grep error_log
常见位置:
error_log = /var/log/php/php-error.log
修改后重启服务:
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
php-fpm.conf 权限坑如果你用的是 PHP-FPM pool:
sudo vim /etc/php/8.1/fpm/pool.d/www.conf
确保:
user = www-data
group = www-data
改完:
sudo systemctl restart php8.1-fpm
PHP 不会自动创建目录
sudo mkdir -p /var/log/php
sudo touch /var/log/php/php-error.log
sudo chown www-data:www-data /var/log/php/php-error.log
Ubuntu 默认启用 AppArmor,可能阻止 PHP 写日志。
sudo aa-status
sudo aa-complain /etc/apparmor.d/usr.sbin.php-fpm8.1
/var/log/php✅ 建议统一:
error_log = /var/log/php/php-cli.log
并给权限:
sudo chown ubuntu:www-data /var/log/php
sudo chmod 775 /var/log/php
你可以贴出:
php -vls -l 日志目录结果我可以直接告诉你 改哪一行、执行哪几条命令。