在 Ubuntu 上解决 PHP-FPM 权限问题通常涉及以下几个方面:
确保 PHP-FPM 进程以正确的用户身份运行:
PHP-FPM 默认以 www-data 用户身份运行。你需要确保你的应用程序文件和目录对这个用户是可读写的。
sudo chown -R www-data:www-data /path/to/your/application
sudo find /path/to/your/application -type d -exec chmod 755 {} \;
sudo find /path/to/your/application -type f -exec chmod 644 {} \;
配置 PHP-FPM 用户和组:
编辑 PHP-FPM 配置文件(通常位于 /etc/php/7.x/fpm/pool.d/www.conf),确保 user 和 group 设置正确。
[www]
user = www-data
group = www-data
然后重启 PHP-FPM 服务:
sudo systemctl restart php7.x-fpm
SELinux 或 AppArmor: 如果你的系统启用了 SELinux 或 AppArmor,可能需要配置这些安全模块以允许 PHP-FPM 访问必要的文件和目录。
SELinux:
sudo setenforce 0 # 临时禁用 SELinux
sudo chcon -Rt httpd_sys_content_t /path/to/your/application # 更改文件上下文
sudo chcon -Rt httpd_sys_rw_content_t /path/to/your/application/uploads # 更改上传目录上下文
AppArmor:
编辑 AppArmor 配置文件(通常位于 /etc/apparmor.d/usr.sbin.php-fpm),添加必要的路径规则。
sudo nano /etc/apparmor.d/usr.sbin.php-fpm
添加以下内容:
/path/to/your/application/ r,
/path/to/your/application/** rwk,
然后重新加载 AppArmor 配置:
sudo systemctl restart apparmor
文件系统权限: 确保你的文件系统权限设置正确,特别是对于上传目录和日志文件。
sudo chown -R www-data:www-data /path/to/your/application/uploads
sudo chmod -R 755 /path/to/your/application/uploads
sudo touch /path/to/your/application/logs/error.log
sudo chown www-data:www-data /path/to/your/application/logs/error.log
sudo chmod 644 /path/to/your/application/logs/error.log
检查 PHP-FPM 日志:
查看 PHP-FPM 日志文件(通常位于 /var/log/php7.x-fpm.log)以获取更多关于权限问题的详细信息。
sudo tail -f /var/log/php7.x-fpm.log
通过以上步骤,你应该能够解决大多数 Ubuntu 上 PHP-FPM 的权限问题。如果问题仍然存在,请提供更多详细信息以便进一步诊断。