O Nginx não envia _SERVER [“DOCUMENT_ROOT”] para o PHP-fpm

1

Isso faz parte do meu arquivo de configuração do nginx:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME /var/www/$fastcgi_script_name;
    include        fastcgi_params;
}

Quase o site carrega porque a localização de / também está definida para / var / www neste arquivo de configuração.

location / {
    root   /var/www;
    index  index.php index.html index.htm;
}

Quando eu uso o phpinfo () e leio a tabela de variáveis do PHP, notei isso:

_SERVER["DOCUMENT_ROOT"]    /usr/share/nginx/html

Outras variáveis (a maioria delas configuradas no nginx.conf) como nome do servidor, nome do arquivo de script, etc, foram enviadas para o php. Então, o nginx não envia esta variável para o PHP. O que tenho que fazer?

Estou usando o PHP 5.3.8 e o nginx 0.8

    
por Mr_LinDowsMac 24.10.2011 / 23:03

2 respostas

5

$ document_root é definido pela diretiva raiz. O 'root html;' line no local do php define $ document_root como < nginx prefixo > / html. Dê uma olhada no link para ver como você deve estar definindo sua raiz no contexto do servidor. Deve ser algo como isto:

server {
  root /var/www;
  index index.php index.html index.htm;

  location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
  }
}
    
por 25.10.2011 / 00:00
1

Estou usando o nginx 1.0.6, e isso está no meu fastcgi_params:

fastcgi_param  DOCUMENT_ROOT      $document_root;

Não tenho certeza se isso ajudará você no 0,8, mas a atualização do nginx ajudará, se não.

    
por 24.10.2011 / 23:14

Tags