Nginx + Php5-fpm不能渲染php文件

我花了好几个小时来弄清楚如何安装Nginx + Ruby Enterprise Edition + PHP5-fpm和MYSQL,最后它已经全部安装好了,而且似乎都已经开始正常运行了。

但由于某些原因,PHP文件没有被处理。

.html文件工作正常,但是当我尝试查看一个.php文件时,就好像它不存在一样,尽pipe它确实存在。 有趣的是,当我尝试查看一个不存在的.html文件时,我得到一个很好的Nginx 404消息,但是当我查看一个.php文件时,它甚至不能提供给我。

所以对于我的新手理解,看起来好像configuration有问题,或者Nginx和PHP-fpm不能互相交stream。

我一直在看nginxconfiguration文件的许多其他例子,我敢肯定,事情的一面是好的。 那么…这里是conf文件的相关位:

 位置〜\ .php $ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME / var / www / eman / $ fastcgi_script_name;
   包括fastcgi_params;
  } 

     fastcgi_connect_timeout 60;
  fastcgi_send_timeout 180;
  fastcgi_read_timeout 180;
  fastcgi_buffer_size 128k;
  fastcgi_buffers 4 256k;
  fastcgi_busy_buffers_size 256k;
  fastcgi_temp_file_write_size 256k;
  fastcgi_intercept_errors on; 

任何帮助是极大的赞赏。

编辑 :这里是从testingphp文件“ http://eman.id.au/test.php ”返回的标题:

  HTTP / 1.1 404 Not Found =>
服务器=> nginx / 0.8.54
date=> 2010年12月16日星期四19:30:30 GMT
 Content-Type => text / html
连接=>closures
 X-Powered-By => PHP / 5.3.2-1ubuntu4.5ppa5〜lucid1 

我相信我今天碰到了完全相同的问题,nginx发送请求到php-fpm(如标题所示),但是你得到一个404,尽pipe这个文件存在并且根本没有(PHP /语法)错误,并且没有错误出现在任何日志(ngins或php-fpm)中。

您没有包含完整的nginxconfiguration,但是您的“服务器”部分中是否可能没有“root”选项定义(正确?)? 你需要确保你做到了,它指向了正确的位置,它是在“服务器”部分,而不是在“位置”之一 – 例如:

 server { root /var/www/eman; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name; include fastcgi_params; } } 

如果你看看头文件http://eman.id.au/test.php ,那么你会看到X-Powered-By: PHP/5.3.2-1ubuntu4.5ppa5~lucid1 。 如果请求没有传递给PHP,它不会显示。 另外,如果PHP无法find传递给它的文件path,它将回显No input file specified.的错误No input file specified.

由于您的站点确实输出了由标题供电,并且没有No input file specified. 错误的最可能的原因是,你的PHP脚本中有一个错误,并显示错误closures。 这会导致一个空白页面和错误日志中的条目,所以看看那里,看看它是否没有填满。

几个想法:

  fastcgi_param SCRIPT_FILENAME /var/www/eman$fastcgi_script_name; 

这是否需要额外的斜线?

  fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name; 

NGINX也有一些奇怪的caching,所以当你在浏览器中尝试URL时,添加一个?random = 12391来强制刷新。 我一直困惑configuration只有30分钟,发现它一直在工作,但我被caching绊倒。

你也可能想逃离你的位置好一点(虽然这不会导致这个问题,你有)这是更好的做法:

 location ~ .php$ 

 location ~ \.php$ 

.php $会匹配请求,比如yourpagephp,而不仅仅是yourpage.php