异想天开

What's the true meaning of light, Could you tell me why

nginx配置php环境

日期:2015-03-04 19:53:49
  
最后更新日期:2015-03-04 19:54:47
【技术】
测试test.php,遇到这个问题:浏览器访问提示No input file specified。见到这个错误就是感到奇怪,因为以前明明默认nginx.conf配置里php的配置项,只要去掉注释就可以直接用,前提装好php的fastcgi。怎么现在又不可以用了?没办法tcpdump了一下,nginx与fastcgi的通信。注意了一下: conf SCRIPT_FILENAME这个应该就是指php脚本的路径吧,这个路径和默认配置上的是一样的,奇怪,当时想到这个路径本身不存在的,后面改为存在的路径,去掉了/scripts,还是不对。想到应该是这个参数设置问题,改为:
[code lang="cpp"]
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9005;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
[/code]
就ok了。查找了下fastcgi这些参数信息,nginx的conf里面有个两个fastcgi.conf和fastcgi_params,一般包含一个即可。fastcgi.conf默认里面有设置fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;。至于为啥之前可以,现在又不可以,以不可考证,可能是版本配置信息变了。
那么这些参数什么意思呢?这些参数的意思就是字面意思。可以在php里面phpinfo()查看server信息。而$fastcgi_script_name这些就是nginx的变量,fastcgi.conf还有如下:
[code lang="cpp"]
...
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
...
[/code]
phpinfo()函数会显示php解释器知道的REMOTE_ADDR等信息。