在 CentOS 上遇到 PHP 日志权限不足(通常是 Permission denied 写不到日志文件或目录),一般按下面思路排查和解决。
常见报错类似:
failed to open stream: Permission denied
或
Unable to open log file
PHP 一般通过以下方式运行:
查看用户:
grep -E '^user|^group' /etc/php-fpm.d/www.conf
常见用户:
apachenginxwww-datawhoami
通常是 root 或当前登录用户。
php -i | grep error_log
或看 php.ini:
error_log = /var/log/php/php_errors.log
ls -ld /var/log/php
ls -l /var/log/php/php_errors.log
假设 PHP 用户是 nginx:
chown nginx:nginx /var/log/php/php_errors.log
chmod 644 /var/log/php/php_errors.log
目录也要有写权限:
chown nginx:nginx /var/log/php
chmod 755 /var/log/php
mkdir -p /var/log/php
chown nginx:nginx /var/log/php
chmod 750 /var/log/php
CentOS 默认开启 SELinux。
ausearch -m avc -ts recent
setenforce 0
semanage fcontext -a -t httpd_log_t "/var/log/php(/.*)?"
restorecon -Rv /var/log/php
❌ 直接 chmod 777
chmod 777 /var/log/php
不安全,仅用于临时测试。
php -r 'error_log("test");'
或触发一次错误,看是否写入成功。
php.ini 中 error_log 配置我可以帮你精确给出命令。