No puedo notar ninguna diferencia si en mi archivo de configuración configuro
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
O:
fastcgi_param SCRIPT_FILENAME $request_filename;
¿Qué hacen respectivamente? ¿Es uno de los dos mejor que el otro?
Gracias por adelantado.
fuente
fastcgi_split_path_info
necesites un ajuste. La respuesta de Steely Wing parece estar muy basada en la experiencia, no en la documentación.fastcgi_split_path_info
para excluir mi prefijo de alias colocándolo fuera de las dos capturas, pero no pareció tener ningún efecto. Mientras que pasar$request_filename
comoSCRIPT_FILENAME
funciona como un encanto, independientemente de si se trata de un alias o no.SCRIPT_FILENAME
en primer lugar, cuando$request_filename
contiene el nombre real del archivo resuelto, sin ningún agregado adicional. El ejemplo anterior es realmente incorrecto, ya que$request_filename
de hecho contiene un nombre de archivo en lugar de solo una ruta, incluso cuando ese archivo no se solicitó explícitamente. Al menos esa es mi conclusión de ayer.TLDR
Lo recomendé usar
$request_filename
paraSCRIPT_FILENAME
.Si usa la
root
directiva$document_root$fastcgi_script_name
es igual a$request_filename
.Si usa la
alias
directiva$document_root$fastcgi_script_name
devolverá la ruta incorrecta, porque$fastcgi_script_name
es la ruta de la URL, no la ruta relacionada$document_root
.Ejemplo
Si tienes config
Solicitud
/api/testing.php
:$document_root$fastcgi_script_name
==/app/www//api/testing.php
$request_filename
==/app/www/testing.php
Solicitud
/api/
:$document_root$fastcgi_script_name
==/app/www//api/index.php
$request_filename
==/app/www/index.php
Y si lo usa
$request_filename
, debe establecer el índice usando laindex
directiva,fastcgi_index
no funcionará.fuente
Supongo que esas líneas fueron tomadas del archivo 'fastcgi_params' ...
Básicamente, no recibe ningún error cuando se trata de
SCRIPT_FILENAME
porque ya está definido cuando definió su directiva raíz en su archivo vhost. Entonces, a menos que lo haya definido explícitamente en su archivo vhost,fastcgi_param
el valor deSCRIPT_FILENAME
se tomaría de la directiva raíz. Pero UN PUNTO IMPORTANTE AQUÍ. Hay otra variable que nginx necesita para enviar las solicitudes al servidor php que es$fastcgi_script_name
y debe definirla bien para evitar URL repetitivas y errores con uri que terminan con una barra inclinada.conclusión :
Para que todo funcione súper bien, todos deben definir
SCRIPT_FILENAME
explícitamente en el archivo 'fastcgi_params' ubicado en la carpeta / etc / nginx o fácilmente en el servidor virtual de su sitio ubicado en la carpeta de sitios disponibles al incluir la siguiente línea en el bloque de ubicación php:o incluido en el archivo 'fastcgi_params' como escribió anteriormente, de cualquier manera es lo mismo. Para obtener más información para conectar ngnix a PHP-FPM, vaya a:
https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
Espero que ayude a cualquiera en el futuro porque me llevó mucho tiempo resolverlo ...
fuente