Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menyelesaikan nginx tidak mendorong ralat php

Bagaimana untuk menyelesaikan nginx tidak mendorong ralat php

PHPz
PHPzasal
2023-03-28 16:54:071349semak imbas

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!

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