Saya tidak dapat melihat perbedaan jika di file konfigurasi saya atur
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Atau:
fastcgi_param SCRIPT_FILENAME $request_filename;
Apa yang mereka lakukan masing-masing? Apakah salah satu dari keduanya lebih baik dari yang lain?
Terima kasih sebelumnya.
sumber
fastcgi_split_path_info
perlu mengubah. Jawaban Steely Wing tampaknya sangat didasarkan pada pengalaman, bukan pada dokumentasi.fastcgi_split_path_info
untuk mengecualikan awalan alias saya dengan meletakkannya di luar dua tangkapan, tetapi tampaknya tidak berpengaruh. Sedangkan lewat$request_filename
sebagaiSCRIPT_FILENAME
karya seperti pesona, terlepas dari apakah alias terlibat atau tidak.SCRIPT_FILENAME
di tempat, ketika$request_filename
berisi nama file aktual diselesaikan, tanpa tambahan ditambahkan. Contoh di atas sebenarnya salah, karena$request_filename
sebenarnya memang berisi nama file yang bertentangan dengan hanya path, bahkan ketika file itu tidak diminta secara eksplisit. Setidaknya itulah kesimpulan saya sampai kemarin.TLDR
Saya merekomendasikan penggunaan
$request_filename
untukSCRIPT_FILENAME
.Jika Anda menggunakan
root
arahan$document_root$fastcgi_script_name
sama dengan$request_filename
.Jika Anda menggunakan
alias
arahan$document_root$fastcgi_script_name
akan mengembalikan jalur yang salah, karena$fastcgi_script_name
jalur URL, bukan jalur yang terkait$document_root
.Contoh
Jika Anda memiliki konfigurasi
Minta
/api/testing.php
:$document_root$fastcgi_script_name
==/app/www//api/testing.php
$request_filename
==/app/www/testing.php
Minta
/api/
:$document_root$fastcgi_script_name
==/app/www//api/index.php
$request_filename
==/app/www/index.php
Dan jika Anda menggunakan
$request_filename
, Anda harus mengatur indeks menggunakanindex
arahan,fastcgi_index
tidak akan berfungsi.sumber
Saya kira kalimat itu diambil dari file 'fastcgi_params' ..
Pada dasarnya Anda tidak mendapatkan kesalahan apa pun
SCRIPT_FILENAME
karena itu sudah ditentukan ketika Anda mendefinisikan direktif root Anda di file vhost Anda. Jadi kecuali Anda mendefinisikannya secara eksplisit dalam file vhost Anda menggunakanfastcgi_param
nilaiSCRIPT_FILENAME
akan diambil dari direktif root .. Tapi SATU TITIK PENTING DI SINI. Ada variabel lain yang dibutuhkan nginx untuk mengirim permintaan ke server php yang ada$fastcgi_script_name
dan Anda harus mendefinisikannya dengan baik untuk menghindari URL berulang dan kesalahan dengan uri's yang diakhiri dengan slash.Kesimpulan :
Agar semuanya berfungsi dengan sangat baik, semua orang harus mendefinisikan
SCRIPT_FILENAME
secara eksplisit baik dalam file 'fastcgi_params' yang terletak di folder / etc / nginx atau dengan mudah di vhost situs Anda yang terletak di folder yang tersedia situs dengan memasukkan baris berikut di blok lokasi php:atau termasuk dalam file 'fastcgi_params' seperti yang Anda tulis di atas, baik itu sama .. Untuk info lebih lanjut untuk menghubungkan ngnix ke PHP-FPM, buka:
https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
Saya harap ini akan membantu siapa pun di masa depan karena butuh banyak waktu untuk mencari tahu ..
sumber