Nginx和HHVM总是返回404

时间:2015-02-03 20:25:54

标签: php nginx hhvm

我知道这不是一个不常见的问题,但不知怎的,我似乎无法找到直接答案。有人能够尽可能地直截了当地回答这个问题吗?

我的NGINX(提供静态文件)和HHVM(来自控制台的hhvm index.php工作正常,但我无法通过NGINX访问.php而没有获得404

情况:
HHVM 3.5.0
Nginx 1.7.9

我在/etc/nginx/conf.d/default.conf

中有这个
server {
    listen       80;
    server_name  localhost;

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

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    include hhvm.conf;
}

在HHVM.conf中

location ~ \.(hh|php)$ {
    fastcgi_keep_conn on;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

2 个答案:

答案 0 :(得分:2)

将以下HHVM conf替换为您的:

location ~ \.(hh|php)$ {
    fastcgi_keep_conn on;
    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$fastcgi_script_name之间看到了一个空格。

<强>更新 使用$document_root

更改/var/www即可解决问题

答案 1 :(得分:2)

root指令在location内定义,这就是为什么它不能通过变量$document_root在hhvm.conf中访问。

应将其直接移至server

级别
server {
    listen       80;
    server_name  localhost;

    root   /var/www;

    location / {
        index  index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    include hhvm.conf;
}

然后,您的hhvm.conf不需要修改,但您可以do some cleanup there too