NGINX / PHP下载而不是执行

时间:2011-11-17 01:09:49

标签: php nginx fastcgi

我有一台运行fastcgi / PHP的NGINX服务器。我需要添加用户名,但我无法让PHP执行文件 - 它只是问我是否要下载它。它在没有userdir的情况下工作(例如,它适用于physibots.info/hugs.php,但不适用于physibots.info/~kisses/hugs.php)。

配置:

server {
    listen      80;
    server_name physibots.info;
    access_log  /home/virtual/physibots.info/logs/access.log;

    root /home/virtual/physibots.info/public_html;

    location ~ ^/~(.+?)(/.*)?\.php$ {
        fastcgi_param SCRIPT_FILENAME /home/$1/public_html$fastcgi_script_name;
        fastcgi_pass unix:/tmp/php.socket;
    }

    location ~ ^/~(.+?)(/.*)?$ {
        alias /home/$1/public_html$2;
        autoindex on;
    }

    location ~ \.php$ {
        try_files $uri /error.html/$uri?null;
        fastcgi_pass unix:/tmp/php.socket;
    }
}

3 个答案:

答案 0 :(得分:1)

我之前在另一台服务器上遇到过类似的问题。我的问题是脚本容器<?。把所有这些放在它后面(就像这个<?php)在脚本中出现的任何地方执行文件而不是下载它们。

希望有所帮助。

答案 1 :(得分:0)

尝试将此行添加到php位置块:

fastcgi_param  REDIRECT_STATUS    200;

顺便说一下 - 你确定php.socket确实存在吗?

答案 2 :(得分:0)

事实证明它链接到/ home / foo / public_html / ~foo。所以,从/ home / foo / public_html / ~foo回到/ home / foo / public_html的循环符号链接就像一个魅力。谢谢你的帮助!