Laravel 5 - Nginx / PHP配置问题

时间:2015-02-15 23:29:04

标签: php ubuntu laravel nginx

我有一个问题,当我进入/ public目录时,它正常显示Laravel应用程序,但导航到任何其他页面会导致它说

未指定输入文件。

我使用的是带有PHP 5.5.9 FPM的Nginx服务器。

我在过去4个小时左右搜索谷歌,查看每个教程和stackoverflow页面以重写Laravel中的问题但是它们都会产生相同的结果。

我甚至将所有文件和文件夹设置为777,这样我就可以看到它是否是某种权限问题。我已经检查了Laravel配置并且它已全部设定,我不知道出了什么问题。

有人能指出我正确的方向吗?

我尝试的最后一个配置如下:

server {
    listen 80 default_server;

    root /usr/share/sites/base;
    index index.php
    server_name localhost;
    location / {
            try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            include fastcgi_params;
    }
}

我还尝试了很多其他的,例如:

server {

            listen          80;
            server_name     domain.com;

            root            /usr/share/sites/base;
            index           index.php;


            location / {

                    try_files $uri $uri/ /index.php?$query_string;

            }

    if (!-d $request_filename) {

            rewrite ^/(.+)/$ /$1 permanent;

    }


    location ~* \.php$ {

            # Server PHP config.
            fastcgi_pass                    unix:/var/run/php5-fpm.sock;
            fastcgi_index                   index.php;
            fastcgi_split_path_info         ^(.+\.php)(.*)$;

            include                         /etc/nginx/fastcgi_params;
            fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;

    }

    location ~ /\.ht {
            deny all;

    }

    }

1 个答案:

答案 0 :(得分:1)

错误"未指定输入文件"将几乎总是与错误的路径发送到PHP的事实有关。

查看您的最后一次配置尝试了'我可以看到你的php位置没有定义fastcgi_param SCRIPT_FILENAME。您应首先在位置中定义它:

location ~ \.php$ {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name
}

此外,您说您可以访问该应用,这意味着index.php正在运行,但在您更改页面时却没有。所以问题也应该来自/index.php?$args。事实上,如果我尝试联系yourserver.com/test并且测试'是不是你的根路径中的文件nginx然后会尝试请求/index.php? (我有这个探索)。您应该只使用/index.php

编辑:解决方案是root指令应该指向Laravel公用文件夹,在这种情况下/usr/share/sites/base/public