$document_root variable not working

Hi,

I’m running nginx 1.2.0 under FreeBSD 9.0.
I configured phpMyAdmin to execute unter
https://server/pma
which is working fine, but php scripts outside
/pma I get “File not found.”
(e.g. https://server/info.php)

this is my config:

location / {
root /usr/local/www/nginx;
index index.html index.php;
}

location /pma {
root /usr/local/www;
index index.php;
}

location ~ .php$ {
set $php_root $document_root;
if ($request_uri ~* /pma) {
set $php_root /usr/local/www;
}

 fastcgi_pass   127.0.0.1:9000;
 fastcgi_index  index.php;
 fastcgi_param  SCRIPT_FILENAME  $php_root$fastcgi_script_name;
 include /usr/local/etc/nginx/fastcgi_params

}

The problem is the config line
set $php_root $document_root;
When I replace it with
set $php_root /usr/local/www/nginx;
everything is okay. I found in the documentation,
that $document_root should contain the value
of “root”, but obvious it isn’t.

Any ideas whats wrong?

Regards,
Tom.

On Thu, May 24, 2012 at 11:45:07PM +0200, Thomas Krause wrote:

Hi there,

The problem is the config line
set $php_root $document_root;
When I replace it with
set $php_root /usr/local/www/nginx;
everything is okay.

You’ve found a configuration that works for you, so there is no need to
change anything.

If you choose to change things, I would suggest removing the
if-within-location, and removing the top-level regex location – and
duplicating the php configuration.

But that’s mostly for future convenience.

I found in the documentation,
that $document_root should contain the value
of “root”, but obvious it isn’t.

Why do you think that it isn’t?

What do you think “root” is set to within your “location ~ .php$”
block?

(Hint: the configuration you have shown does not show what it is set
to.)

Any ideas whats wrong?

is my guess.

All the best,

f

Francis D. [email protected]