Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menyelesaikan nginx tidak mendorong ralat php
Dalam pembangunan laman web harian, kami sering menggunakan Nginx sebagai pelayan web dan PHP sebagai bahasa back-end. Walau bagaimanapun, kadangkala kami mendapati bahawa walaupun terdapat ralat dalam PHP, Nginx tidak akan meminta sebarang maklumat, yang menyukarkan kami untuk menyahpepijat atur cara. Artikel ini akan memperkenalkan beberapa penyelesaian untuk membolehkan Nginx menggesa mesej ralat PHP.
1. Memahami kaedah pelaporan dan pengumpulan ralat
Semasa proses menggunakan pelayan, kami lazimnya mematikan output ralat PHP . Maklumat boleh mendedahkan risiko keselamatan atau membawa kepada kebocoran maklumat. Tetapi semasa proses pembangunan, kami memerlukan mesej ralat ini untuk mencari masalah dan nyahpepijat atur cara.
Satu cara untuk menyelesaikan masalah ini ialah menghidupkan output ralat PHP. Dalam PHP kita boleh menetapkan tahap log ralat atau melaporkan ralat dengan segera. Pada masa yang sama, kami juga boleh menambah beberapa pilihan pada fail konfigurasi Nginx untuk memaparkan mesej ralat PHP.
2. Tetapan ralat PHP dalam fail konfigurasi Nginx
Buka fail konfigurasi pelayan Nginx, biasanya /etc/nginx/nginx.conf
, cari blok http{}
dan tambah konfigurasi berikut :
server { # server settings ... # server block location rules ... # php-fpm status check location ~ ^/(status|ping)$ { access_log off; # php-fpm settings fastcgi_param PHP_VALUE "error_reporting=E_ALL"; include fastcgi_params; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } # php error logs location ~ \.php$ { fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_error.log"; include fastcgi_params; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } # error pages error_page 404 /404.html; error_page 500 502 503 504 /50x.html; # static files location ~* \.(jpg|jpeg|gif|png|css|js|ico)$ { expires 7d; access_log off; } # disable direct access to .ht files location ~ /\.ht { deny all; } }
Antaranya, fastcgi_param PHP_VALUE
digunakan untuk menghantar maklumat ralat kepada proses PHP yang diminta oleh pelayan Nginx. error_reporting=E_ALL
bermaksud mengeluarkan semua maklumat tahap ralat. fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_error.log";
bermaksud mengeluarkan maklumat ralat PHP ke fail /var/log/nginx/php_error.log
.
Selepas menukar fail konfigurasi, muat semula pelayan Nginx:
sudo systemctl reload nginx
3 Tetapan yang salah dalam fail konfigurasi PHP
Konfigurasi PHP fail biasanya /etc/php/7.4/fpm/php.ini
Cari baris error_reporting
dan tetapkannya untuk memaparkan semua mesej ralat:
error_reporting = E_ALL
Kemudian cari baris display_errors
dan tetapkannya kepada On
, seperti ini Anda boleh paparkan semua mesej ralat PHP pada halaman web:
display_errors = On
Kemudian simpan fail dan mulakan semula PHP-FPM:
sudo systemctl restart php7.4-fpm
4. Ringkasan
Helah untuk mengkonfigurasi pelayan web Nginx untuk menyembunyikan mesej ralat PHP adalah dengan menetapkannya daripada pelayan Nginx dan proses PHP. Ini boleh membantu pembangun mengenal pasti ralat dalam kod dengan cepat, membantu menyelesaikan masalah dengan cepat dan meningkatkan kualiti kod.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan nginx tidak mendorong ralat php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!