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