Nginx没有通过URL参数

乱搞Nginx …出于某种原因,它看起来像我的URL参数都没有被传递。 我的网页加载正常,但像“ http://mysite.com/more.php?id=101 ”这样的URL会引发错误,并说该ID是未定义的索引。

我假设这是基本的东西我在configuration文件中缺less。

一些信息:conf.d / virtual.conf

server { listen 80; server_name dev.mysite.com; index index.php; root /var/www/dev.mysite.com_html; location / { root /var/www/dev.mysite.com_html; } location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /var/www/wap/dev.mysite.com_html/$fastcgi_script_n ame; fastcgi_index index.php; include /etc/nginx/fastcgi_params; } } 

错误日志:

 2009/06/22 11:44:21 [notice] 16319#0: start worker process 16322 2009/06/22 11:44:28 [error] 16320#0: *1 FastCGI sent in stderr: "PHP Notice: Undefined index: id in /var/www/dev.mysite.com_html/more.php on line 10 

提前致谢。

我通过在你的location节中附加$args来解决类似的问题

 try_files $uri $uri/ /www/index.php?$args; 

要debugging这个最简单的方法,在vhost的根目录下创build一个phpinfo.php文件。 叫它phpinfo.php并设置内容

 <?php phpinfo(); ?> 

然后访问http://domain.com/phpinfo.php?id=1 ,并检查结果输出

 _ENV["REQUEST_URI"] /mail/phpinfo.php?id=1 

如果这是真的,那么参数正确传递。

这我的configuration文件:

 location ~ .*.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:1026; #spawn-fcgi -u nobody -a 127.0.0.1 -p 1026 -f /usr/bin/php-cgi fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www//htdocs/$fastcgi_script_name; } #/etc/nginx/fastcgi_params fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 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; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; 

这是我的configuration文件的摘录。 这适用于SugarCRM。

 # Catchall for everything else location / { root /var/www/crm.foo.com; access_log off; index index.php index.html; expires 1d; try_files $uri $uri/ /index.php?q=$uri; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_param SCRIPT_FILENAME /var/www/crm.foo.com$fastcgi_script_name; include /usr/local/nginx/conf/fastcgi_params; } 

你究竟是什么尝试实现,即使用原始的PHP公关某种框架,我有cakephp成功运行使用以下虚拟主机configuration文件

 server { listen 80; server_name www.domain.com; rewrite ^/(.*) http://domain.com/$1 permanent; } server { listen 80; server_name domain.com; access_log /home/public_html/domain.com/log/access.log; error_log /home/public_html/domain.com/log/error.log; location / { root /home/public_html/domain.com/app/webroot; index index.php; if (-f $request_filename) { break; } if (!-f $request_filename) { rewrite ^/(.+)$ /index.php?url=$1 last; break; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/public_html/domain.com/app/webroot/index.php; #$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } } 

与以下fastcgi_params文件

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; 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; fastcgi_param REDIRECT_STATUS 200; 

你应该能够得到你想要的更多信息和你的核心nginx设置运行的想法