Não consigo notar nenhuma diferença se no meu arquivo de configuração eu definir
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Ou:
fastcgi_param SCRIPT_FILENAME $request_filename;
O que eles fazem respectivamente? Um dos dois é melhor que o outro?
Desde já, obrigado.
fonte
fastcgi_split_path_info
precise de um ajuste. A resposta de Steely Wing parece ser extremamente baseada na experiência, não na documentação.fastcgi_split_path_info
para excluir meu prefixo de alias colocando-o fora das duas capturas, mas não pareceu ter nenhum efeito. Considerando passando$request_filename
comoSCRIPT_FILENAME
funciona como um encanto, independentemente de haver ou não um alias está envolvido.SCRIPT_FILENAME
em primeiro lugar, quando$request_filename
contém o nome do arquivo real resolvido, sem nenhum acréscimo acrescentado. O exemplo acima está realmente incorreto, pois$request_filename
de fato contém um nome de arquivo em vez de apenas um caminho, mesmo quando esse arquivo não foi solicitado explicitamente. Pelo menos essa é a minha conclusão de ontem.TLDR
Eu recomendei o uso
$request_filename
paraSCRIPT_FILENAME
.Se você estiver usando a
root
diretiva$document_root$fastcgi_script_name
é igual a$request_filename
.Se você estiver usando a
alias
diretiva$document_root$fastcgi_script_name
retornará o caminho errado, porque$fastcgi_script_name
é o caminho da URL, e não o caminho relacionado$document_root
.Exemplo
Se você tiver configuração
Pedido
/api/testing.php
:$document_root$fastcgi_script_name
==/app/www//api/testing.php
$request_filename
==/app/www/testing.php
Pedido
/api/
:$document_root$fastcgi_script_name
==/app/www//api/index.php
$request_filename
==/app/www/index.php
E se você usar
$request_filename
, você deve definir o índice usando aindex
diretiva,fastcgi_index
não funcionará.fonte
Eu acho que essas linhas foram retiradas do arquivo 'fastcgi_params' ..
Basicamente, você não está recebendo nenhum erro quando se trata,
SCRIPT_FILENAME
porque já está definido quando você definiu sua diretiva raiz no seu arquivo vhost. Portanto, a menos que você o tenha definido explicitamente em seu arquivo vhost,fastcgi_param
o valor deSCRIPT_FILENAME
seria retirado da diretiva raiz. Mas UM PONTO IMPORTANTE AQUI. Existe outra variável que o nginx precisa para enviar as solicitações para o servidor php que é$fastcgi_script_name
e você precisa defini-la bem para evitar URLs repetitivos e erros com os URLs que terminam com barra.Conclusão :
Para que tudo funcione super bem, todos devem definir
SCRIPT_FILENAME
explicitamente no arquivo 'fastcgi_params' localizado na pasta / etc / nginx ou facilmente no vhost do site localizado na pasta sites disponíveis, incluindo a seguinte linha no bloco de localização php:ou incluído no arquivo 'fastcgi_params' como você escreveu acima, seja como for. Para obter mais informações sobre como conectar o ngnix ao PHP-FPM, vá para:
https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
Espero que ajude alguém no futuro, porque demorei muito tempo para descobrir isso.
fonte