温馨提示×

ubuntu php日志如何权限设置

小樊
44
2026-09-21 17:47:17
栏目: 编程语言

在 Ubuntu 上,PHP 日志的权限设置通常涉及 日志文件本身、Web 服务器用户、PHP 运行方式(FPM / CLI / Apache module)。下面按常见场景说明。


一、先确认 PHP 运行用户

1. PHP-FPM(最常见)

ps aux | grep php-fpm

通常是:

  • www-data(Apache/Nginx 默认)

2 Apache mod_php

ps aux | grep apache2

用户也是:

  • www-data

3 PHP CLI

通常是当前登录用户(如 ubuntu)


二、常见 PHP 日志位置

类型 路径示例
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

三、推荐权限设置(安全 + 可用)

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_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 能写,系统更安全

四、PHP 配置中指定日志

php.ini(CLI / FPM)

log_errors = On
error_log = /var/log/php/php_errors.log

修改后重启:

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

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

如果日志写不进去:

sudo aa-status

可临时测试:

sudo systemctl stop apparmor

⚠️ 生产不建议关闭,应写规则。


六、Nginx / Apache 日志权限示例

Nginx

sudo chown www-data:adm /var/log/nginx/error.log
sudo chmod 640 /var/log/nginx/error.log

Apache

sudo chown root:adm /var/log/apache2/error.log
sudo chmod 640 /var/log/apache2/error.log

七、常见问题排查

PHP 写不了日志

ls -l /var/log/php
sudo -u www-data touch /var/log/php/test.log

权限太大被拒

❌ 不推荐:

chmod 777 /var/log/php

✅ 正确做法:

  • 给 PHP 用户写权限
  • 不用 777

八、总结建议(最佳实践)

✅ 使用专用目录
✅ 属主为 www-data
✅ 权限 755 / 644
✅ 不要 777
✅ 日志定期 rotate(logrotate)


如果你愿意,可以告诉我:

  • Ubuntu 版本
  • PHP 版本
  • Web 服务器(Nginx / Apache)
  • 是 PHP 错误日志还是业务日志

我可以给你精确命令。

0 踩