Nginx и трейлинг-косые черты на $document_root?
Я использую следующую конфигурацию для 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
. Мне сообщили, что это неправильная конфигурация, но никто не смог точно сказать, почему моя конфигурация требует этой дополнительной косой черты.
Как я могу избавиться от этой дополнительной косой черты?
Ответы
Ответ 1
Просто столкнулся с той же проблемой (в remi-установке nginx + php-fpm на сервере RHEL6), вы можете решить эту проблему, добавив следующую строку в /etc/nginx/fastcgi _params
fastcgi_param SCRIPT_FILENAME $request_filename;
Я нашел эту строку в RHEL отсутствующей, присутствуя в отлично работающем Debian nginx.
Ответ 2
Получает ли param PATH_TRANSLATED
правильный URI? Я думаю, что это немедленная конкатенация переменных в файле conf, который не вычисляется. При добавлении косой черты между ними, возможно, они правильно интерпретируются.
Когда вы получите сообщение об ошибке No input file specified
, проверьте свой журнал, чтобы узнать, какой URI был запрошен.
Ответ 3
Удалите try_files $uri index.php$uri;
в строке 3.
Ответ 4
Вопрос о предпочтении. Пока вы согласны, любой способ в порядке.
Либо добавьте косую черту в файле конфигурации, и убедитесь, что в конце и начале корня документа и script имени соответственно нет дополнительных косых черт или наоборот.
Ответ 5
что происходит, когда вы явно добавляете корневую директиву так:
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;
}