Saya telah menabrak dinding saat menyiapkan situs menggunakan nginx / fpm. Halaman ini menampilkan "File tidak ditemukan", dan ini muncul di nginx error.log:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
Saya baru mengenal nginx dan fpm, dan pesan kesalahan itu tidak ada artinya bagi saya (bahkan mesin google belum membantu!). Adakah yang bisa menjelaskan apa yang mungkin terjadi?
SCRIPT_FILENAME
.Jawaban:
Anda harus memiliki
location
bagian untuk menangani permintaan PHP yang dikonfigurasi mirip dengan ini:(Ekstra
try_files
menyelesaikan kerentanan keamanan yang dapat memungkinkan file sewenang-wenang dieksekusi sebagai PHP.)Selain itu, Anda
root
harus didefinisikan dalamserver
bagian dari file konfigurasi, tidak denganlocation
bagian. Ini adalah salah satu kesalahan konfigurasi nginx yang paling umum .sumber
Ini adalah catatan untuk pemasangan penumpang.
Saya baru saja menginstal nginx dari sumber via penumpang yang menyebabkan masalah dengan php5-fpm. Nginx.conf default menggunakan masalah yang dijelaskan oleh Michael Hampton. Solusinya adalah dengan menghapus blok di sekitar arahan root dan indeks, jadi:
menjadi:
Selanjutnya blok php tidak diatur dengan benar. Lihat jawaban Michael Hamptons untuk cara yang benar.
Catatan tambahan bisa berupa bahwa jika php5-fpm diatur untuk menggunakan soket arahkan parameter fastcgi_pass di blok php di nginx.conf ke pengaturan soket di /etc/php5/fpm/pool.d/www.conf.
sumber
Saya baru saja mengalami masalah ini di versi baru nginx. (konfigurasi diambil dari versi yang lebih lama)
Yang harus saya lakukan adalah menempatkan
include fastcgi_params;
kebiasaan saya di atasSCRIPT_FILENAME
seperti ini:Ketika
SCRIPT_FILENAME
sedang ditimpa.sumber
Jika Anda menggunakan alias di blok lokasi Anda, kesalahan 404 yang tidak ditangani juga dapat menunjukkan perilaku ini. Anda dapat melihat ini jika halaman yang ditampilkan di browser adalah teks sederhana "File not found" sebagai kebalikan dari halaman yang diformat lebih cantik (tengah) nginx 404. Pada dasarnya, itu benar-benar mengatakan halaman 404 tidak dapat ditemukan.
Untuk menyelesaikannya, tambahkan
try_files $uri =404
baris tambahan di blok lokasi Anda dan muat ulang konfigurasi nginx. Selain apa yang dikatakan Michael Hampton tentang penyelesaian kerentanan keamanan tertentu , ini juga memungkinkan pengendali fastcgi untuk mengganti definisi alias dan menemukan skrip 404 di lokasi default.sumber
tentang baris 149, ubah pengguna php && grup pengguna
Saya mengujinya sukses sekarang.
sumber
Saya sudah melihat :
di server saya ditempatkan di bawah beban tinggi saat stress testing. Kecurigaan saya, masih harus dikonfirmasi, adalah bahwa file menangani yang tersedia dari OS habis. Dalam hal ini php-fpm tidak bisa mendapatkan referensi ke file.
Saya menyadari ini spekulatif tetapi tentu saja cocok dengan skenario saya dan mungkin juga membantu orang lain.
sumber
sumber