NGINX 未执行 PHP 文件

NGINX 未执行 PHP 文件

我找不到答案。安装了 PHP5 + NGINX + PHP-FPM 并且无法执行 php 文件,它在 CHROME 中出现“哎呀!此链接似乎已损坏。”错误。我没有任何有价值的错误日志报告,我在根目录中有一个 index.php,尝试创建一个自定义 phpinfo.php 文件,但都没有用。

我确实可以加载 HTML 文件,但不能加载 PHP。

以下是 NGINX 中的本地站点配置:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/website$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

将所有目录的所有权更改为 www-data:www-data,在 php 文件上设置 777,没有任何效果。重新启动 nginx、FPM,没有任何效果。

帮助? :(

答案1

在 CHROME 中会出现“哎呀!此链接似乎已损坏。”错误。

如果错误页面小于 512 字节,Chrome 将显示其自己的错误页面。

我怀疑您有以下几行fastcgi_params

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

如果是这样,因为该root指令是在 中定义的,所以location /永远不会应用于location ~ \.php$,因此SCRIPT_FILENAME将成为 URI。

root可以通过将指令移至级别上下文来解决此问题server

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

    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;
    }

}

答案2

在我的例子中,缺少 php-zip 包。为了解决这个问题,我运行了:

yum install -y php-zip
systemctl restart php-fpm nginx

相关内容