Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I installed nginx on Ubuntu Hardy and immediately realized that the PHP scripts were getting empty request arrays, ie whether GET or POST nothing was coming through, even the $_REQUEST array was empty.

When I switch back to Apache it was all fine.

The installation nginx version is 0.6.35-0ubuntu1.1~hardy1 and PHP is PHP Version 5.2.4-2ubuntu5.10.

What could be wrong?

share|improve this question
    
Are you using rewrite or redirect rules? –  ircmaxell Aug 16 '10 at 15:40
    
No, there is not rewrites or redirects –  vfclists Aug 16 '10 at 17:46

3 Answers 3

up vote 3 down vote accepted

Check if this set in your "location"-section for your fastcgi-module

 fastcgi_param  QUERY_STRING     $query_string;

http://wiki.nginx.org/NginxHttpFcgiModule

share|improve this answer
    
I disable the basic fastcgi_params file from inclusion, because I didn't know how may were needed. Worth learning about though. –  vfclists Aug 16 '10 at 20:33

It's a feature of the try_files command in nginx that the query_string is not passed automatically to the rewritten file but instead must be passed explicitly. Because of this _$SERVER['QUERY_STRING'] is always empty, and so the the variables $_REQUEST and $_GET are also not set.

From the Nginx documentation:

Unlike with rewrite, $args are not automatically preserved if the fallback is not a named location. If you need args preserved, you must do so explicitly:

try_files $uri $uri/ /index.php?q=$uri&$args;

or with just the arguments

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

If you want to guarantee to get the original arguments then use $query_string which is the same as $args except that $query_string is read-only.

share|improve this answer

Try to check the variables_order in php config file used by nginx.

share|improve this answer
    
The variables_order is EGPCS. It is set to the default –  vfclists Aug 16 '10 at 17:47

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.