我有一个问题,当我进入/ 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;
}
}
答案 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
。