温馨提示×

debian php权限如何设置

小樊
49
2026-09-08 03:46:17
栏目: 编程语言

在 Debian 上设置 PHP 权限,通常涉及文件/目录权限、PHP 运行用户、Web 服务器(Apache/Nginx)权限以及安全策略。下面按常见场景系统说明。


一、确认 PHP 运行用户

1. Apache + mod_php

PHP 以 www-data 用户运行:

ps aux | grep apache

2. Nginx + PHP-FPM

PHP-FPM 进程用户通常是 www-data:

ps aux | grep php-fpm

查看池配置:

/etc/php/*/fpm/pool.d/www.conf
user = www-data
group = www-data

二、网站目录推荐权限

假设网站目录为:

/var/www/html

推荐权限方案(最安全)

# 目录 755
find /var/www/html -type d -exec chmod 755 {} \;

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

属主设置

chown -R www-data:www-data /var/www/html

或(开发环境):

chown -R youruser:www-data /var/www/html
chmod -R 775 /var/www/html

三、可写目录权限(上传 / 缓存)

如:

/var/www/html/uploads
/var/www/html/storage
/var/www/html/cache
chown -R www-data:www-data /var/www/html/uploads
chmod -R 775 /var/www/html/uploads

⚠️ 不要对整个项目 777


四、PHP 写文件失败常见原因

1. 权限不足

ls -l /var/www/html

2. SELinux(Debian 默认无)

Debian 一般不用 SELinux,用 AppArmor。

3. open_basedir 限制

在 php.ini:

open_basedir = /var/www/html

五、PHP 禁用危险函数(安全)

/etc/php/*/fpm/php.ini 或 cli/php.ini:

disable_functions = exec,passthru,shell_exec,system,proc_open,popen

六、PHP-FPM 权限示例(Nginx)

server {
    root /var/www/html;
    index index.php;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }
}

确保 socket 权限:

ls -l /run/php/php8.2-fpm.sock

应为:

srw-rw---- www-data www-data

七、调试权限问题

namei -l /var/www/html/index.php
sudo -u www-data touch /var/www/html/test

八、常见错误总结

问题 原因
500 错误 PHP 无读权限
上传失败 目录不可写
文件生成失败 用户不对
777 被黑 权限过大

如果你能告诉我:

  • 用的是 Apache 还是 Nginx
  • PHP 版本
  • 是 生产还是开发环境

我可以给你一套精确命令。

0 踩