NGINX不执行PHP文件


9

我找不到答案。安装了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,什么都没有。

帮帮我?:(


看你的错误日志
Mike

已经做了,“我没有任何有价值的错误日志报告”。完全是空的。
加布里埃尔·佐里拉

您需要更多数据来诊断问题。我建议从添加“ fastcgi_intercept_errors on;”开始。到您的配置(如果不在fastcgi_params中)以记录任何FPM错误。另外,在您的error_log行中添加“ debug”以获取更多详细信息(还要检查主要的nginx error_log(可能在/ var / log中))。您的server_name指令看起来很不正常-不确定是否已将其替换为本帖子,或者实际上是否是如此。作为一般建议,将root指令移出location块。(最终(不太可能)建议:确保您的默认服务器不提供您可以看到的html页面)。
cyberx86

Answers:


9

它会显示“糟糕!此链接似乎已损坏”。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;
    }

}

答对了。按照建议移动根服务器块并工作。谢谢!
加百利·A·佐里拉

@quanta:OP是否在他的问题中编辑了配置?因为这是一条硬编码的路径,所以在位置上下文中定义根指令时,它仍然应该可以正常工作。唯一不起作用的情况是,他使用$ document_root在fastcgi_params文件中定义了SCRIPT_FILENAME并因此覆盖了他的硬编码文件。
马丁·峡湾

@MartinF:不,OP没有编辑配置。你是对的。我将编辑我的答案。
量子

-3

就我而言,它缺少php-zip软件包。为了解决这个问题,我跑了:

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

3
显然,OP的原因完全是其他原因。
斯文

这并不意味着找到解决此问题的方法的人将与OP有着相同的原因,他们很可能具有wejdross所做的原因并认为此答案有用。问题不是特定于该原因的,而是特定于该症状的,并且显然有多种原因,因此具有不同原因的人可能会在这里结束。
Synetech '19

-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;

4
欢迎来到服务器故障!看来您可能已在此处提供了良好的答案,但是请考虑阅读我如何编写一个良好的答案?在我们的帮助中心中,然后修改并扩展您的答案。从技术上讲,您的命令/代码/设置可能是解决方案,但欢迎您提供一些解释。提前致谢。
HBruijn

4
另外:即使那条线可以解决问题,但去哪儿了?OP显示两个locations。线路合二为一吗?另一个?都?请修改您的答案以使其完整。
David Makogon '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.