温馨提示×

Ubuntu PHP权限如何设置

小樊
39
2026-08-24 10:52:00
栏目: 编程语言

在 Ubuntu 上设置 PHP 权限,通常是为了解决 网站无法写入文件、上传失败、mkdir 无权限、Permission denied 等问题。下面按最常见场景给你一个完整、实用的说明。


一、先搞清楚:PHP 是以哪个用户运行的?

1️⃣ Apache + PHP(最常见)

ps aux | grep apache

通常是:

www-data

2️⃣ Nginx + PHP-FPM

ps aux | grep php-fpm

也是:

www-data

结论:Ubuntu 下 PHP 默认运行用户是 www-data


二、最常用、最安全的权限设置(推荐)

✅ 网站目录推荐结构

/var/www/html/
├── index.php
├── upload/
├── cache/

三、目录和文件权限标准做法

1️⃣ 网站根目录

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

说明:

  • 755:目录可读、可进入
  • 644:文件默认可读

2️⃣ PHP 需要写入的目录(如上传、缓存)

只给需要写的目录写权限

sudo chown -R www-data:www-data /var/www/html/upload
sudo chmod -R 775 /var/www/html/upload

如果还是不行:

sudo chmod -R 777 /var/www/html/upload

⚠️ 不推荐长期使用 777,仅用于排查问题


3️⃣ 文件权限(防止 PHP 文件被执行写入)

find /var/www/html -type f -exec chmod 644 {} \;

四、常见错误 & 解决方案

❌ 1. Permission denied

Warning: move_uploaded_file(): Permission denied

✅ 解决:

sudo chown -R www-data:www-data 目录
sudo chmod -R 775 目录

❌ 2. mkdir() 无权限

mkdir("upload/2026");

✅ 解决:

sudo chown -R www-data:www-data upload

❌ 3. Nginx 访问正常,PHP 写不了

检查 PHP-FPM 用户:

cat /etc/php/*/fpm/pool.d/www.conf | grep user

确保是:

user = www-data
group = www-data

然后重启:

sudo systemctl restart php8.2-fpm

五、Ubuntu + Nginx + PHP 推荐完整配置

sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
sudo chmod -R 775 /var/www/html/upload

六、安全建议(非常重要)

不要整个网站 777不要把 PHP 文件 owner 设为 root只给上传/缓存目录写权限生产环境禁止 PHP 写 PHP 文件


七、快速排查命令

# 当前 PHP 运行用户
ps aux | grep php

# 查看目录权限
ls -ld 目录

# 查看文件权限
ls -l 文件

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

  • ✅ Apache 还是 Nginx?
  • ✅ PHP 版本?
  • ✅ 具体报错信息?

我可以给你 精确到命令级别 的设置方案。

0