Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana untuk menyelesaikan nginx tidak mendorong ralat php

Bagaimana untuk menyelesaikan nginx tidak mendorong ralat php

PHPz
PHPzke hadapan
2023-05-26 13:03:461623semak imbas

1 Memahami kaedah pelaporan dan pengumpulan ralat

Semasa proses menggunakan pelayan, kami lazimnya mematikan output ralat PHP Mesej ralat PHP boleh mendedahkan kelemahan 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. Kami 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

Fail konfigurasi PHP adalah umum. Untuk /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 supaya ia boleh dipaparkan di web halaman Semua mesej ralat PHP dipaparkan:

display_errors = On

Kemudian simpan fail dan mulakan semula PHP-FPM:

sudo systemctl restart php7.4-fpm

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:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam