在 Ubuntu 上解决 PHP-FPM 权限问题通常涉及以下几个方面:
1. 确保 PHP-FPM 进程以正确的用户身份运行
PHP-FPM 默认以 www-data
用户身份运行。你需要确保你的 web 服务器(如 Nginx 或 Apache)也以相同的用户身份运行。
对于 Nginx:
编辑 Nginx 配置文件(通常位于 /etc/nginx/sites-available/your-site
),确保 fastcgi_pass
指向正确的 PHP-FPM 套接字或端口,并且 fastcgi_param SCRIPT_FILENAME
设置正确。
server { listen 80; server_name your-domain.com; root /var/www/your-site; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 或者使用端口 fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
对于 Apache:
确保 mod_proxy_fcgi
和 mod_fastcgi
模块已启用,并在虚拟主机配置中正确设置。
ServerName your-domain.com DocumentRoot /var/www/your-site Options Indexes FollowSymLinks AllowOverride All Require all granted SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost"
2. 确保文件和目录权限正确
确保你的 web 根目录及其内容对 www-data
用户可读写。
sudo chown -R www-data:www-data /var/www/your-site sudo find /var/www/your-site -type d -exec chmod 755 {} \; sudo find /var/www/your-site -type f -exec chmod 644 {} \;
3. 检查 PHP-FPM 配置
确保 PHP-FPM 配置文件(通常位于 /etc/php/7.4/fpm/pool.d/www.conf
)中的用户和组设置正确。
[user] = www-data [group] = www-data
4. 重启服务
在修改配置文件后,重启相关服务以应用更改。
对于 Nginx:
sudo systemctl restart nginx
对于 Apache:
sudo systemctl restart apache2
对于 PHP-FPM:
sudo systemctl restart php7.4-fpm
5. 检查日志文件
如果问题仍然存在,检查相关服务的日志文件以获取更多信息。
- Nginx 错误日志:
/var/log/nginx/error.log
- Apache 错误日志:
/var/log/apache2/error.log
- PHP-FPM 错误日志:
/var/log/php7.4-fpm.log
通过这些步骤,你应该能够解决大多数 Ubuntu 上的 PHP-FPM 权限问题。如果问题仍然存在,请提供具体的错误信息以便进一步诊断。