Saya telah menyiapkan server nginx dengan php5-fpm. Ketika saya mencoba memuat situs saya mendapatkan halaman kosong tanpa kesalahan. Halaman html disajikan dengan baik tetapi bukan php. Saya mencoba menyalakan display_errors di php.ini tetapi tidak berhasil. php5-fpm.log tidak menghasilkan kesalahan dan juga nginx.
nginx.conf
server {
listen 80;
root /home/mike/www/606club;
index index.php index.html;
server_name mikeglaz.com www.mikeglaz.com;
error_log /var/log/nginx/error.log;
location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
EDIT
inilah log kesalahan nginx saya:
2013/03/15 03:52:55 [error] 1020#0: *55 open() "/home/mike/www/606club/robots.txt" failed (2: No such file or directory), client: 199.30.20.40, server: mikeglaz.com, request: "GET /robots.txt HTTP/1.1", host: "mikeglaz.com"
connect() failed ... fastcgi://127.0.0.1:9000
bertentangan dengan nginx conf Anda, muat ulang nginx conf?Jawaban:
Sebagai referensi, saya melampirkan
location
blokir saya untuk menangkap file dengan.php
ekstensi:Periksa ulang
/path/to/fastcgi-params
, dan pastikan itu ada dan dapat dibaca oleh pengguna nginx.sumber
menggantikan
dengan
dan hapus fastcgi_param SCRIPT_FILENAME ... di nginx.conf
sumber
.conf
satu parameter konfigurasi tambahan yang hilang_params
./etc/init.d/nginx restart
) juga memperbaikinya untuk saya di Pengujian Debian setelahnginx
peningkatan pada 10 September 2014.fastcgi_params
vsfastcgi.conf
: blog.martinfjordvald.com/2013/04/…Juga memiliki masalah ini dan akhirnya menemukan solusinya di sini . Singkatnya, Anda perlu menambahkan baris berikut ke file konfigurasi nginx fastcgi Anda (/ etc / nginx / fastcgi_params di Ubuntu 12.04)
sumber
Banyak pengguna yang berada di utas ini berharap menemukan solusi untuk halaman kosong yang ditampilkan saat menggunakan nginx + php-fpm , saya menjadi salah satunya. Ini adalah rekap dari apa yang akhirnya saya lakukan setelah membaca banyak jawaban di sini ditambah penyelidikan saya sendiri (diperbarui ke php7.2):
1) Buka
/etc/php/7.2/fpm/pool.d/www.conf
dan periksa nilai parameterlisten
.2) Parameter
listen
harus sesuai denganfastcgi_pass
parameter dalam file konfigurasi situs Anda (i, e:)/etc/nginx/sites-enabled/default
.3) Periksa file yang sebenarnya ada:
4) Jika tidak ada itu berarti php7.2-fpm tidak berjalan, jadi Anda perlu me-restart itu:
Berkenaan dengan
location
bagian dalam/etc/nginx/sites-enabled/default
:Periksa file
snippets/fastcgi-php.conf
ada di lokasi/etc/nginx/
:File ini berisi daftar definisi variabel yang diperlukan oleh php7.2-fpm. Variabel didefinisikan secara langsung atau melalui penyertaan file yang terpisah.
File ini terletak di
/etc/nginx/fastcgi.conf
dan sepertinya:nginx mencakup dua file parameter yang mungkin: fastcgi_params dan fastcgi.conf . Perbedaan antara keduanya adalah definisi variabel
SCRIPT_FILENAME
:Untuk mempersingkat cerita, fastcgi.conf harus selalu berfungsi. Jika karena alasan tertentu Anda mengatur menggunakan fastcgi_params , Anda harus mendefinisikan
SCRIPT_FILENAME
:Sekarang memuat ulang konfigurasi nginx:
Dan periksa file php ditampilkan dengan benar. Misalnya:
/var/www/html/test.php
Di mana
/var/www/html
path ke root dokumen.Jika terlepas dari semua itu, Anda masih melihat file kosong, pastikan Anda
php.ini
telahshort_open_tag
mengaktifkannya (jika Anda menguji halaman PHP dengan tag pendek).sumber
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Akhirnya berhasil.Pastikan Anda memilikinya di / etc / nginx / fastcgi_params
Siapa yang tahu mengapa ini belum ada? Jumlah waktu yang harus dihabiskan bersama ini!
sumber
Saya menulis program C pendek yang mengembalikan variabel lingkungan yang dilewatkan dari nginx ke aplikasi fastCGI.
Simpan ini ke file, mis
fcgi_debug.c
Untuk mengkompilasinya, instal terlebih dahulu
gcc
danlibfcgi-dev
, kemudian jalankan:Untuk menjalankannya, instal
spawn-fcgi
, lalu jalankan:Kemudian, ubah konfigurasi nginx fcgi Anda untuk menunjuk ke program debug:
Mulai ulang nginx, segarkan halaman, dan Anda akan melihat semua parameter muncul di browser Anda untuk Anda debug! :-)
sumber
apt-get install spawn-fcgi libfcgi-dev
.Petunjuk ini membantu saya menginstal Ubuntu 14.04 LTS saya,
Selain itu saya harus menyalakan
short_open_tag
in/etc/php5/fpm/php.ini
sumber
Tambahkan ini di
/etc/nginx/conf.d/default.conf
:sumber
/etc/nginx/fastcgi_params
file akan lebih tepat menurut saya.Jika ada yang mengalami masalah ini tetapi tidak ada jawaban di atas yang menyelesaikan masalah mereka, saya mengalami masalah yang sama dan mengalami kesulitan melacaknya karena file konfigurasi saya benar, pekerjaan ngnix dan php-fpm saya berjalan dengan baik, dan tidak ada kesalahan yang datang melalui log kesalahan apa pun.
Kesalahan bodoh tapi saya tidak pernah memeriksa variabel Tag Buka Pendek di file php.ini saya yang diatur ke
short_open_tag = Off
. Karena file php saya menggunakan<?
bukan<?php
, halaman muncul kosong. Tag Terbuka Pendek seharusnya sudah diaturOn
dalam kasus saya.Semoga ini bisa membantu seseorang.
sumber
Alasan masalah ini terjadi adalah karena konfigurasi fastcgi di nginx tidak berfungsi seperti yang disyaratkan dan di tempat atau pemrosesan, mereka merespons sebagai data html. Ada dua cara yang memungkinkan Anda dapat mengkonfigurasi nginx Anda untuk menghindari masalah ini.
Metode 1:
Metode 2:
Kedua metode akan bekerja dengan baik, Anda dapat melanjutkan dan mengambil salah satu dari mereka. Mereka hampir melakukan operasi yang sama dengan sedikit perbedaan.
sumber
Semoga berhasil
sumber
Tidak ada jawaban di atas yang berfungsi untuk saya - PHP dengan benar merender semuanya kecuali halaman yang mengandalkan mysqli, yang mengirimkan halaman kosong dengan 200 kode respons dan tidak melontarkan kesalahan apa pun. Karena saya menggunakan OS X, perbaikannya sederhana
sudo port install php56-mysql
diikuti oleh restart PHP-FPM dan nginx.
Saya bermigrasi dari pengaturan Apache / PHP yang lebih lama ke nginx, dan gagal melihat ketidakcocokan versi pada driver untuk
php-mysql
danphp-fpm
.sumber
Saya memiliki masalah yang sama, nginx sedang memproses setengah halaman kemudian berhenti. Tidak ada solusi yang disarankan di sini yang berfungsi untuk saya. Saya memperbaikinya dengan mengubah buffering nginx fastcgi:
Setelah perubahan,
location
blok saya terlihat seperti:Untuk perinciannya, lihat https://www.namhuy.net/3120/fix-nginx-upstream-response-buffered-tentara-file-error.html
sumber
Jika Anda mendapatkan layar kosong, itu mungkin karena 2 alasan:
Browser memblokir Frames agar tidak ditampilkan. Di beberapa browser, frame dianggap tidak aman. Untuk mengatasinya, Anda dapat meluncurkan versi tanpa bingkai dari phpPgAdmin
http://-your-domain-name-/intro.php
Anda telah mengaktifkan fitur keamanan di Nginx untuk X-Frame-Options, coba nonaktifkan.
sumber
Ini menyelesaikan masalah saya:
sumber
Ini adalah vhost saya untuk UBUNTU 18.04 + apache + php7.2
Baris terakhir membuatnya berbeda dari jawaban lainnya.
sumber
Saya memiliki kesalahan yang sama, tetapi dalam kombinasi dengan Nextcloud. Jadi jika ini tidak berhasil, coba: Lihat manual Nginx .
sumber