Ich kann keinen Unterschied feststellen, wenn ich in meiner Konfigurationsdatei festgelegt habe
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Oder:
fastcgi_param SCRIPT_FILENAME $request_filename;
Was machen sie jeweils? Ist einer der beiden besser als der andere?
Danke im Voraus.
quelle
fastcgi_split_path_info
ändern. Die Antwort von Steely Wing scheint auf Erfahrung zu beruhen, nicht auf der Dokumentation.fastcgi_split_path_info
, mein Alias-Präfix auszuschließen, indem ich es außerhalb der beiden Captures platziert habe, aber es schien keine Wirkung zu haben. Während vorbei$request_filename
wieSCRIPT_FILENAME
wirkt wie ein Zauber, unabhängig davon , ob ein Alias beteiligt ist.SCRIPT_FILENAME
, wenn$request_filename
der tatsächliche Dateiname aufgelöst ist, ohne dass irgendwelche Extras angehängt werden. Das obige Beispiel ist tatsächlich falsch, da es$request_filename
tatsächlich einen Dateinamen anstelle eines Pfads enthält, selbst wenn diese Datei nicht explizit angefordert wurde. Zumindest ist das mein Fazit von gestern.TLDR
Ich empfehle die Verwendung
$request_filename
fürSCRIPT_FILENAME
.Wenn Sie
root
Direktive verwenden$document_root$fastcgi_script_name
ist gleich$request_filename
.Wenn Sie
alias
Direktive verwenden$document_root$fastcgi_script_name
Gibt den falschen Pfad zurück, da der$fastcgi_script_name
Pfad der URL und nicht der Pfad, auf den sich die URL bezieht$document_root
.Beispiel
Wenn du config hast
Anfrage
/api/testing.php
:$document_root$fastcgi_script_name
==/app/www//api/testing.php
$request_filename
==/app/www/testing.php
Anfrage
/api/
:$document_root$fastcgi_script_name
==/app/www//api/index.php
$request_filename
==/app/www/index.php
Und wenn Sie verwenden
$request_filename
, sollten Sie Index mitindex
Direktive festlegen ,fastcgi_index
wird nicht funktionieren.quelle
Ich denke, diese Zeilen wurden aus der 'fastcgi_params'-Datei übernommen.
Grundsätzlich treten keine Fehler auf,
SCRIPT_FILENAME
da diese bereits definiert wurden, als Sie Ihre root-Direktive in Ihrer vhost-Datei definiert haben. Wenn Sie es also nicht explizit in Ihrer vhost-Datei mitfastcgi_param
dem Wert von definiert haben, wird esSCRIPT_FILENAME
der root-Direktive entnommen. Aber EIN WICHTIGER PUNKT HIER. Es gibt eine weitere Variable, die Nginx benötigt, um die Anfragen an den PHP-Server zu senden.$fastcgi_script_name
Sie muss gut definiert werden, um sich wiederholende URLs und Fehler mit URLs zu vermeiden, die mit Schrägstrichen enden.Fazit :
Damit alles super funktioniert, sollte jeder
SCRIPT_FILENAME
explizit entweder in der Datei 'fastcgi_params' im Ordner / etc / nginx oder einfach im vhost Ihrer Site im Ordner sites-available definieren, indem er die folgende Zeile in den PHP-Adressblock einfügt:oder in der 'fastcgi_params'-Datei enthalten, wie Sie oben geschrieben haben, so oder so. Weitere Informationen zum Verbinden von ngnix mit PHP-FPM finden Sie unter:
https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
Ich hoffe, es würde irgendwem in der Zukunft helfen, denn ich habe viel Zeit gebraucht, um es herauszufinden.
quelle