温馨提示×

ubuntu php日志权限问题

小樊
42
2026-09-30 15:10:40
栏目: 编程语言

在 Ubuntu 上,PHP 日志常见的权限问题通常出现在 PHP-FPM / Apache + PHP 写入 error_log 或自定义日志文件时。下面按常见场景给你一套排查与解决思路。


一、常见报错现象

  • Permission denied
  • 日志文件不生成
  • Web 访问正常,但错误不记录
  • failed to open stream: Permission denied

二、确认 PHP 运行用户

PHP-FPM(最常见)

ps aux | grep php-fpm

通常是:

  • www-data

查看具体配置:

grep -R "user" /etc/php/*/fpm/pool.d/

Apache

ps aux | grep apache

一般也是 www-data


三、日志文件权限正确做法

1️⃣ 日志目录权限

sudo mkdir -p /var/log/php
sudo chown -R www-data:www-data /var/log/php
sudo chmod 755 /var/log/php

2️⃣ 日志文件权限

sudo touch /var/log/php/php-error.log
sudo chown www-data:www-data /var/log/php/php-error.log
sudo chmod 644 /var/log/php/php-error.log

四、PHP 配置示例

php.ini

log_errors = On
error_log = /var/log/php/php-error.log

重启服务:

sudo systemctl restart php8.1-fpm
sudo systemctl restart apache2

五、SELinux / AppArmor(Ubuntu 常见是 AppArmor)

Ubuntu 默认 AppArmor 可能限制 PHP 写日志。

检查

sudo aa-status

临时解决(不推荐长期使用)

sudo systemctl stop apparmor

正确方式

在 AppArmor 配置中允许日志路径(较复杂,一般本地环境可忽略)


六、常见坑点

❌ 用 root 创建日志,PHP 无法写

# 错误示例
sudo touch /var/www/html/app.log
# PHP 是 www-data,写不了

✅ 正确:

sudo chown www-data:www-data /var/www/html/app.log

❌ 日志写在项目目录但目录是 755 root

chmod 775 storage/logs
chown -R www-data:www-data storage

七、快速自检命令

namei -l /var/log/php/php-error.log

可一眼看出哪一级目录权限不对。


如果你能贴出:

  • PHP 运行方式(FPM / Apache / CLI)
  • 报错完整信息
  • 日志路径

我可以直接帮你给出「精确修复命令」。

0 踩