在我的服务器上升级nginx之后,所有PHP站点都停止工作。 之前,我在“fastcgi_params”这个文件中有这个:
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
然后PHP站点的configuration文件里面有一个这样的块:
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; }
但是,这不再起作用。 它只适用于如果我在每个站点的configuration文件中有这个:
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
我必须在这里设置SCRIPT_FILENAME,而不是在“fastcgi_params”中。 它现在还必须在它前面有$ document_root。 如果在包含的fastcgi_params文件中设置,“$ document_root $ fastcgi_script_name”和“$ fastcgi_script_name”都不起作用。
我并不担心我现在不得不用$ document_root(但我很好奇,如果有人知道为什么会打破或为什么它以前工作)prepend它,但我宁愿保持fastcgi_params文件中的常见function为简单,所以我想知道为什么这是行不通的。
我会猜测你的configuration可能是一系列不好的做法,所以我build议你阅读这个: http : //blog.martinfjordvald.com/2010/07/nginx-primer/
总之,你可以(也应该)把fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 到你的fastcgi_params(或者只是包含fastcgi.conf文件),但是由于nginxinheritance了不同层次之间的configuration值,你需要确保你的根指令是在服务器块中定义的,而不是在location /中。
这通常是非常好的build议,尽可能地放在最上层,避免重复。
在我的launchpad.net/~nginx/+archive/stable ppa版本的nginx最新升级到0.8.53-0ppa5〜lucid版本之后,有些东西打破了“将执行传递给php-fpm”的function。 我正在运行10.04 LTS x64。 当我从上面的ppa repo自动升级nginx的时候,所有的Ubuntu 10.04 LTS服务器和VPS都出现了这个问题。 https://launchpad.net/~nginx/+archive/stable
我现在通过降级到7.65的Ubuntu 10.04 LTS Canonical打包的回购版本来修复它。 http://packages.ubuntu.com/lucid/nginx
我已经尝试了许多受影响的参数排列 – > $ script_filename ,没有运气。
奇怪的是,我认为这是有事实的,他们已经添加了一行定义$ SCRIPT_FILENAME内fastcgi_params 。
- 漏洞修复:添加SCRIPT_FILENAME到fastcgi_params
(从https://launchpad.net/~nginx/+archive/stable/+packages点击lucid包,看到上面的行更新日志)这似乎没有任何影响, 我放弃和降级,以保存我的生产PHP网站。
我想知道是否有人可以在这个问题上得到另一个POV。
如果你也受到这个影响,请注意。
我不确定在启动板中标记为稳定的ppa回购有哪些QA。 (我是Launchpad世界的相对新手。)