Я не могу заметить никакой разницы, если в моем конфигурационном файле я установил
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Или:
fastcgi_param SCRIPT_FILENAME $request_filename;
Что они делают соответственно? Один из двух лучше, чем другой?
Заранее спасибо.
источник
fastcgi_split_path_info
нужно настроить. Ответ Steely Wing, похоже, основан на опыте, а не на документации.fastcgi_split_path_info
чтобы исключить мой префикс псевдонима, поместив его за пределы двух снимков, но, похоже, это не имело никакого эффекта. Принимая во внимание , проходя ,$request_filename
какSCRIPT_FILENAME
работает как шарм, независимо от того , или не участвует псевдоним.SCRIPT_FILENAME
в первую очередь, когда$request_filename
содержит фактическое разрешенное имя файла, без каких-либо дополнительных дополнений. Приведенный выше пример на самом деле неверен, поскольку$request_filename
на самом деле содержит имя файла, а не просто путь, даже если этот файл явно не запрашивался. По крайней мере, это мой вывод от вчерашнего дня.TLDR
Я рекомендовал использовать
$request_filename
дляSCRIPT_FILENAME
.Если вы используете
root
директиву$document_root$fastcgi_script_name
равно$request_filename
.Если вы используете
alias
директиву$document_root$fastcgi_script_name
вернет неправильный путь, потому что$fastcgi_script_name
это путь URL, а не путь к$document_root
.пример
Если у вас есть конфиг
Запрос
/api/testing.php
:$document_root$fastcgi_script_name
==/app/www//api/testing.php
$request_filename
==/app/www/testing.php
Запрос
/api/
:$document_root$fastcgi_script_name
==/app/www//api/index.php
$request_filename
==/app/www/index.php
И если вы используете
$request_filename
, вы должны установить индекс с помощьюindex
директивы,fastcgi_index
не будет работать.источник
Я думаю, что эти строки были взяты из файла 'fastcgi_params' ..
По сути, вы не получаете никаких ошибок, когда дело доходит до,
SCRIPT_FILENAME
потому что это уже определено, когда вы определили свою корневую директиву в своем файле vhost. Так что, если вы не определили это явно в своем файле vhost, используяfastcgi_param
значениеSCRIPT_FILENAME
, будет взято из корневой директивы. Но ОДНА ВАЖНАЯ ТОЧКА ЗДЕСЬ. Есть еще одна переменная, которая нужна nginx для отправки запросов на php-сервер,$fastcgi_script_name
и вы должны правильно ее определить, чтобы избежать повторяющихся URL-адресов и ошибок с URI, заканчивающимися косой чертой.Вывод :
Чтобы все работало очень хорошо, каждый должен
SCRIPT_FILENAME
явно указать либо в файле 'fastcgi_params', расположенном в папке / etc / nginx, либо просто в vhost вашего сайта, расположенного в папке sites-available, включив следующую строку в блок php location:или включены в файл 'fastcgi_params', как вы написали выше, в любом случае это одно и то же. Для получения дополнительной информации о подключении ngnix к PHP-FPM перейдите по ссылке:
https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
Я надеюсь, что это поможет любому в будущем, потому что мне потребовалось много времени, чтобы понять это ..
источник