Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membolehkan pelaporan ralat php dalam nginx

Bagaimana untuk membolehkan pelaporan ralat php dalam nginx

PHPz
PHPzasal
2023-04-06 09:15:02712semak imbas

Nginx ialah pelayan web yang digunakan secara meluas dan pelayan proksi terbalik yang digunakan dalam banyak tapak web dan aplikasi dengan trafik tinggi. Walau bagaimanapun, apabila menggunakan Nginx, kadangkala anda akan menghadapi ralat PHP. Artikel ini akan memperkenalkan sebab untuk menghidupkan ralat PHP dan cara menyelesaikan masalah ini.

1. Kewujudan masalah

Dalam Nginx, menggunakan penterjemah PHP memerlukan pengikatan PHP-CGI kepada Nginx. Interaksi antara PHP-CGI dan Nginx boleh dicapai menggunakan protokol FastCGI. Seperti yang dikonfigurasikan biasanya, Nginx menulis output PHP-CGI ke fail sementara dan kemudian memindahkan fail melalui sistem fail. Ralat dilog masuk dalam log ralat Nginx dan dihantar kepada pengguna bahagian hadapan.

Memandangkan Nginx tidak mempunyai modul PHP terbina dalam, jika PHP-CGI tidak dikonfigurasikan dengan betul, ralat PHP mungkin tidak dipaparkan dengan betul.

2. Sebab pelaporan ralat

Apabila PHP melaporkan ralat, Nginx akan memaparkan kod status HTTP 502 Bad Gateway secara lalai. Ini mungkin disebabkan oleh sebab berikut:

  1. Proses PHP-CGI tidak boleh berkomunikasi dengan Nginx. Ini mungkin disebabkan oleh PHP-CGI tidak berjalan, atau Nginx dikonfigurasikan secara tidak betul.
  2. Proses PHP-CGI mengembalikan ralat. Ini mungkin disebabkan oleh konfigurasi PHP-CGI yang salah atau ralat program.
  3. Nginx gagal menulis semua pengepala respons kepada klien. Ini mungkin disebabkan oleh salah konfigurasi Nginx atau pelayan yang sibuk.

3. Penyelesaian

Untuk menyelesaikan masalah ralat PHP dengan betul, anda mesti mencari punca dan mencari penyelesaian yang betul.

  1. Sahkan sama ada proses PHP-CGI sedang berjalan

Untuk menyemak sama ada proses PHP-CGI sedang berjalan, anda boleh menggunakan arahan berikut:

ps aux | grep php

Jika tiada output, bermakna PHP-CGI tidak berjalan. Jika anda perlu memulakan semula PHP-CGI, anda boleh menggunakan arahan berikut:

/etc/init.d/php-fpm restart
  1. Semak sama ada proses PHP-CGI berkomunikasi dengan Nginx

Untuk memastikan bahawa proses PHP-CGI Untuk berkomunikasi dengan betul dengan Nginx, anda perlu menyemak konfigurasi berikut dalam fail konfigurasi Nginx:

location ~ \.php$ {
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  include        fastcgi_params;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Di sini fastcgi_pass menentukan alamat dan port proses PHP-CGI. Jika ia tidak betul atau tidak dimulakan, ia akan Akibatnya, Nginx tidak dapat berkomunikasi dengan proses PHP-CGI.

  1. Semak konfigurasi PHP-CGI

Untuk menyemak sama ada konfigurasi PHP-CGI betul, anda boleh membuka fail konfigurasi PHP, seperti /etc/php5/cgi/php.ini dan pastikan tetapan berikut adalah betul:

display_errors = On
error_reporting = E_ALL & ~E_NOTICE

Tetapan ini akan membolehkan paparan ralat PHP dan keupayaan melaporkan ralat.

  1. Semak konfigurasi Nginx

Untuk memastikan fail konfigurasi Nginx betul, anda perlu membuka fail konfigurasi Nginx, seperti /etc/nginx/nginx.conf, dan pastikan bahawa tetapan berikut adalah betul:

error_log /var/log/nginx/error.log;

Tetapan ini akan mendayakan ciri pengelogan ralat Nginx, membantu mencari dan nyahpepijat ralat.

Kesimpulan

Apabila menggunakan Nginx, pelaporan ralat PHP adalah masalah biasa, tetapi ia juga mudah untuk diselesaikan. Hanya semak bahawa proses PHP-CGI berjalan dan berkomunikasi dengan betul dengan Nginx, dan PHP dan Nginx dikonfigurasikan dengan betul. Dengan langkah mudah ini, anda boleh menyelesaikan isu ralat PHP dengan mudah dan memastikan pelayan anda berjalan dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk membolehkan pelaporan ralat php dalam nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn