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 parameter listen
.
listen = /var/run/php/php7.2-fpm.sock
2) Parameter listen
harus sesuai dengan fastcgi_pass
parameter dalam file konfigurasi situs Anda (i, e:) /etc/nginx/sites-enabled/default
.
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
3) Periksa file yang sebenarnya ada:
$ file /var/run/php/php7.2-fpm.sock
/var/run/php/php7.2-fpm.sock: socket
4) Jika tidak ada itu berarti php7.2-fpm tidak berjalan, jadi Anda perlu me-restart itu:
$ sudo /etc/init.d/php7.2-fpm restart
[ ok ] Restarting php7.2-fpm (via systemctl): php7.2-fpm.service.
Berkenaan dengan location
bagian dalam /etc/nginx/sites-enabled/default
:
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
Periksa file snippets/fastcgi-php.conf
ada di lokasi /etc/nginx/
:
$ file /etc/nginx/snippets/fastcgi-php.conf
/etc/nginx/snippets/fastcgi-php.conf: ASCII text
File ini berisi daftar definisi variabel yang diperlukan oleh php7.2-fpm. Variabel didefinisikan secara langsung atau melalui penyertaan file yang terpisah.
include fastcgi.conf;
File ini terletak di /etc/nginx/fastcgi.conf
dan sepertinya:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
...
fastcgi_param REDIRECT_STATUS 200;
nginx mencakup dua file parameter yang mungkin: fastcgi_params dan fastcgi.conf . Perbedaan antara keduanya adalah definisi variabel SCRIPT_FILENAME
:
$ diff fastcgi_params fastcgi.conf
1a2
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Untuk mempersingkat cerita, fastcgi.conf harus selalu berfungsi. Jika karena alasan tertentu Anda mengatur menggunakan fastcgi_params , Anda harus mendefinisikan SCRIPT_FILENAME
:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Sekarang memuat ulang konfigurasi nginx:
$ sudo nginx -s reload
Dan periksa file php ditampilkan dengan benar. Misalnya:
/var/www/html/test.php
<pre><?php var_export($_SERVER)?></pre>
Di mana /var/www/html
path ke root dokumen.
Jika terlepas dari semua itu, Anda masih melihat file kosong, pastikan Anda php.ini
telah short_open_tag
mengaktifkannya (jika Anda menguji halaman PHP dengan tag pendek).