在 Ubuntu 上,使用 PHP-FPM 实现权限控制通常涉及以下几个方面:
-
配置 PHP-FPM 用户和组: 确保 PHP-FPM 以特定的用户和组运行。这可以在
/etc/php/版本号/fpm/pool.d/www.conf
文件中设置。user = www-data group = www-data
-
设置文件和目录权限: 确保你的 web 根目录及其内容的所有者和组与 PHP-FPM 运行的用户和组一致。
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 {} \;
-
配置 Nginx 或 Apache: 如果你使用 Nginx 或 Apache 作为反向代理来处理 PHP 请求,确保它们的配置文件中正确设置了 PHP-FPM 的 socket 或端口。
-
Nginx:
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据你的 PHP 版本调整 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
-
Apache:
SetHandler "proxy:fcgi://unix:/run/php/php7.4-fpm.sock" # 根据你的 PHP 版本调整
-
-
SELinux 或 AppArmor: 如果你的系统启用了 SELinux 或 AppArmor,确保它们不会阻止 PHP-FPM 访问必要的文件和目录。
-
SELinux:
sudo setenforce 0 # 临时禁用 SELinux sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久禁用 SELinux
-
AppArmor:
sudo aa-disable /etc/apparmor.d/usr.sbin.php-fpm7.4 # 根据你的 PHP 版本调整
-
-
防火墙设置: 确保防火墙允许 HTTP 和 HTTPS 流量。
sudo ufw allow 'Nginx Full'
-
日志文件权限: 确保 PHP-FPM 和 web 服务器的日志文件权限设置正确,以便它们可以被写入。
sudo chown www-data:www-data /var/log/php7.4-fpm.log # 根据你的 PHP 版本调整 sudo chmod 664 /var/log/php7.4-fpm.log # 根据你的 PHP 版本调整
通过以上步骤,你可以在 Ubuntu 上使用 PHP-FPM 实现基本的权限控制。根据具体需求,你可能还需要进行更详细的配置和调整。