遇到 Nginx 配置 FastCGI 时出现 "Primary script unknown" 错误,通常是因为 Nginx 无法找到 PHP 脚本文件。这个问题常见于 PHP-FPM(FastCGI Process Manager)与 Nginx 的配置不匹配。以下是一些解决步骤:
1. **检查 `fastcgi_param SCRIPT_FILENAME` 配置**:
确保 Nginx 配置文件中 `fastcgi_param SCRIPT_FILENAME` 的路径正确指向了你的 PHP 脚本文件。这个参数告诉 PHP-FPM 脚本文件的确切位置。
例如,如果你的 PHP 文件位于 `/var/www/html` 目录下,你的 Nginx 配置可能看起来像这样:
nginx location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
注意 `$document_root` 变量应该被设置为你的网站根目录,如 `/var/www/html`。
2. **检查 `$document_root` 变量**:
确保 `$document_root` 变量在你的 Nginx 配置文件中被正确设置。这通常在 `server` 块中设置:
nginx server { listen 80; server_name localhost; root /var/www/html; ... }
3. **检查文件权限**:
确保 Nginx 进程有权访问 PHP 脚本文件。你可以使用 `chown` 和 `chmod` 命令来修改文件的所有者和权限。
4. **重启 Nginx 和 PHP-FPM**:
修改配置后,需要重启 Nginx 和 PHP-FPM 以使更改生效。
sudo systemctl restart nginx php-fpm
或者,如果你不使用 systemd,可以使用其他命令如 `service` 或直接调用可执行文件。
5. **检查错误日志**:
如果问题仍然存在,检查 Nginx 和 PHP-FPM 的错误日志可能会提供更多线索。
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/php-fpm/error.log
注意:日志文件的位置可能因你的系统配置而异。
按照这些步骤操作后,通常可以解决 "Primary script unknown" 的错误。如果问题仍然存在,请检查你的 Nginx 和 PHP-FPM 配置是否有其他潜在的错误。