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