我花了好几个小时来弄清楚如何安装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