Nginx和FastCGI下载PHP文件而不是处理它们

时间:2013-12-18 21:34:30

标签: php nginx fastcgi

我在Windows 7(64位)上运行,PHP 5.4.12和Nginx 1.5.8。

我已经阅读了许多关于设置这个问题的教程,并解决了这个问题,即从我的localhost请求PHP文件时,它将其作为文件下载而不是显示PHP页面。下面是我的nginx.conf文件:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen 8081;
        server_name localhost;
        access_log C:/nginx/logs/access.log;
        error_log C:/nginx/logs/error.log;
        root C:/nginx/html;

        fastcgi_param  REDIRECT_STATUS    200;

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

}

我正在通过命令提示符手动运行nginx.exe。 我还尝试首先在单独的命令提示符下手动启动php-cgi.exe,如下所示:

C:\php5.4.12\php-cgi.exe -b 127.0.0.1:9000

我要求的php文件位于C:/ nginx / html中,我正在请求它:

http://localhost:8081/info.php

然后下载它。这个PHP文件的内容是:

<?php
phpinfo();
?>

如何让我的PHP脚本在此环境中运行。有人有这方面的经验吗?

3 个答案:

答案 0 :(得分:3)

尝试将default_type application/octet-stream;更改为default_type text/html; 也许你的php脚本没有设置内容MIME类型,它来自nginx。

答案 1 :(得分:0)

尝试放置&#34; *&#34;这里

location ~* \.php$ {

你的路径有问题,而且nginx不知道通过URL访问的路径是它应该通过的路径&#34; fastcgi_pass&#34;。因此,它提供了下载文件。

从以下位置检查错误日志:

C:/nginx/logs/error.log;

你有&#34; C:/nginx/html/info.php;&#34;?

答案 2 :(得分:0)

我发现,如果您对服务器上的端口80使用了http2指令。 http2仅在https下有效。因此,如果您删除http2,它应该可以解决您的问题。