nginx и конечные косые черты в корне документа $?
Я использую следующую конфигурацию для nginx: http://gist.github.com/340956
Однако эта конфигурация вызывает ошибку No input file specified
с PHP. Единственный способ, которым я смог решить эту проблему, - это изменить эту строку:
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
Обратите внимание на "/" между $document_root
и $fastcgi_script_name
. Мне сообщили, что это неправильная конфигурация, но никто не смог точно сказать мне, почему моя конфигурация требует этой дополнительной косой черты.
Как я могу избавиться от этого лишнего косая черта?
5 answers
Только что столкнулся с той же проблемой (при установке remi nginx+php-fpm на сервере RHEL6), вы можете решить ее, добавив следующую строку в /etc/nginx/fastcgi_params
fastcgi_param SCRIPT_FILENAME $request_filename;
Я обнаружил, что эта строка отсутствует в RHEL, хотя она присутствует в отлично работающем Debian nginx.
Получает ли параметр PATH_TRANSLATED
правильный URI? Я думаю, что это немедленное объединение переменных в файле conf, которое не вычисляется. При добавлении косой черты между ними, возможно, они интерпретируются правильно.
Когда вы получите сообщение об ошибке No input file specified
, проверьте свой журнал, чтобы узнать, какой URI был запрошен.
Удалить try_files $uri index.php$uri;
в строке 3.
Вопрос предпочтения. Пока вы последовательны, в любом случае все в порядке.
Либо добавьте косую черту в файл конфигурации и убедитесь, что в конце и начале имени корневого документа и имени сценария нет дополнительных косых черт соответственно, либо наоборот.
Что происходит, когда вы явно добавляете корневую директиву следующим образом:
location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(.*)$;
include fastcgi.conf;
root /var/www/my_webroot;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}