Назад | Перейти на главную страницу

Nginx не отправляет _SERVER [«DOCUMENT_ROOT»] PHP-fpm

Это часть моего файла конфигурации 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;
}

Почти загружается веб-сайт, потому что расположение / также установлено на / var / www в этом конфигурационном файле.

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

Когда я использую phpinfo () и читаю таблицу переменных PHP, я заметил следующее:

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

Другие переменные (большинство из них настроены в nginx.conf), такие как имя сервера, имя файла сценария и т. Д., Были отправлены на php. Итак, nginx не отправляет эту переменную PHP. Что мне нужно сделать?

Я использую PHP 5.3.8 и nginx 0.8

$ document_root устанавливается корневой директивой. 'Root html;' строка в расположении php устанавливает $ document_root в <префикс nginx> / html. Взгляни на https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#root-inside-location-block чтобы увидеть, как вы должны установить свой корень в контексте сервера. Это должно выглядеть примерно так:

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;
  }
}

Я использую nginx 1.0.6, и это у меня в fastcgi_params:

fastcgi_param  DOCUMENT_ROOT      $document_root;

Не уверен, что это поможет вам на 0.8, но обновление nginx поможет, если нет.