温馨提示×

ubuntu php为何权限不足

小樊
42
2026-09-13 09:57:26
栏目: 编程语言

在 Ubuntu 上运行 PHP 时提示“权限不足”,通常不是 PHP 本身的问题,而是运行 PHP 的用户文件 / 目录 / 端口没有足够权限。下面按常见原因逐一说明。


一、PHP 是以什么用户运行的?

不同运行方式,用户不同:

  • Apache + mod_phpwww-data
  • Nginx + PHP-FPMwww-data
  • CLI(命令行 php) → 当前登录用户(如 ubuntu

查看 PHP-FPM 用户:

ps aux | grep php-fpm

二、最常见原因及解决办法

1️⃣ 网站目录权限不足(最常见)

PHP 无法读 / 写文件。

错误示例

failed to open stream: Permission denied

解决

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

如果是上传目录:

sudo chmod -R 775 storage
sudo chown -R www-data:www-data storage

2️⃣ 写日志 / 缓存目录无权限

如 Laravel:

storage/logs/laravel.log permission denied

解决:

sudo chmod -R 775 storage
sudo chown -R www-data:www-data storage

3️⃣ 绑定 80 / 443 端口权限不足

错误

Permission denied (cannot bind to port 80)

原因:

  • 非 root 用户不能绑定 <1024 端口

解决方式

  • sudo php -S
  • 或用 Nginx / Apache 反代
  • 或给权限(不推荐):
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/php

4️⃣ SELinux / AppArmor(Ubuntu 一般是 AppArmor)

Ubuntu 默认 AppArmor 可能限制 PHP。

查看:

sudo aa-status

临时解决:

sudo systemctl stop apparmor

5️⃣ 执行系统命令被限制

PHP 调用 exec() / shell_exec() 失败:

  • disable_functions 限制
  • 用户无执行权限

检查:

php -i | grep disable_functions

6️⃣ 文件在 /home 下,Web 用户无法访问

如:

/home/ubuntu/project

www-data 无法进入 /home/ubuntu

解决:

  • 放到 /var/www
  • 或修改权限:
chmod 755 /home/ubuntu

三、快速排查流程(推荐)

whoami                 # 当前用户
ps aux | grep php      # PHP 运行用户
ls -l 文件或目录        # 看 owner / 权限
tail -f /var/log/nginx/error.log
tail -f /var/log/php7.x-fpm.log

四、如果你愿意

你可以直接贴出:

  • 报错信息
  • PHP 运行方式(Apache / Nginx / CLI)
  • 出问题的文件路径

我可以帮你精准定位是哪一类权限问题

0