Nginx没有把uri传递给php5-fpm,而是作为文本文件

如上所述,uri没有被传递给nginx。 我已经包括了整个“尝试”块来显示这个。

location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. set $page_to_view "/index.php"; try_files $uri $uri.php $uri/; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } 

所以它本质上是说:“噢,我们做了$ uri.php文件存在,让我们服务器,而不是实际发送到PHP。

我的fpm部分在下面。

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } 

非常多的股票。 所以我没有得到的是为什么在这个世界上nginx不再这样做了。 我知道它是在debian下使用fastcgi,但现在不是,我因为硬盘崩溃而丢失了旧的configuration文件,这是我发送驱动器之前没有备份的文件,因为我认为它会是完全可以重写它。

你不会说你要加载什么URI,但是我会假设它不会以.php

这里的问题是,你没有像名字所暗示的那样直接从try_files指令中获取。 这是专门尝试一个文件。 它被logging为try_files file ... uri; 这意味着只有最后一个参数将被视为回退导致内部重写。 最后一个参数之前的任何参数都会作为静态文件进行testing,如果find则作为静态文件提供。

这意味着你可以做try_files $uri $uri/ $uri.php; 但你不能做try_files $uri $uri.php $uri/

尝试更换

 location ~ \.php$ { 

 location ~ \.php { 

和$ document_root与实际目录在哪里放置php文件

例如。

 fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;