Maison >développement back-end >Problème PHP >Comment résoudre nginx ne provoquant pas d'erreur php

Comment résoudre nginx ne provoquant pas d'erreur php

PHPz
PHPzoriginal
2023-03-28 16:54:071349parcourir

Dans le développement quotidien de sites Web, nous utilisons souvent Nginx comme serveur Web et PHP comme langage back-end. Cependant, nous constatons parfois que même s'il y a une erreur dans PHP, Nginx ne demandera aucune information, ce qui rend très difficile le débogage du programme. Cet article présentera quelques solutions pour permettre à Nginx d'afficher des messages d'erreur PHP.

1. Comprendre les méthodes de rapport d'erreurs et de collecte

Pendant le processus de déploiement du serveur, nous désactivons généralement la sortie d'erreur de PHP En effet, les informations d'erreur PHP peuvent entraîner des risques de sécurité ou des fuites d'informations. Mais pendant le processus de développement, nous avons besoin de ces messages d'erreur pour localiser les problèmes et déboguer le programme.

Une façon de résoudre ce problème consiste à activer la sortie d'erreur de PHP. En PHP, nous pouvons définir le niveau de journalisation des erreurs ou signaler les erreurs immédiatement. Parallèlement, nous pouvons également ajouter quelques options au fichier de configuration Nginx pour afficher les messages d'erreur PHP.

2. Paramètres PHP incorrects dans le fichier de configuration Nginx

Ouvrez le fichier de configuration du serveur Nginx, généralement /etc/nginx/nginx.conf, recherchez http{} block, ajoutez la configuration suivante : /etc/nginx/nginx.conf,找到http{}块,添加如下配置:

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;
    }
}

其中,fastcgi_param PHP_VALUE用于向Nginx服务器请求的PHP进程传递错误信息。 error_reporting=E_ALL表示输出所有错误级别的信息。fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_error.log";表示将PHP错误信息输出到/var/log/nginx/php_error.log文件中。

更改完配置文件后,重新加载Nginx服务器:

sudo systemctl reload nginx

三、PHP 配置文件中的错误设置

PHP的配置文件一般为/etc/php/7.4/fpm/php.ini,找到error_reporting这一行,将其设置为显示所有的错误信息:

error_reporting = E_ALL

然后找到display_errors这一行,将其设置为On

display_errors = On
Parmi eux, fastcgi_param PHP_VALUE est utilisé pour transmettre les informations d'erreur au processus PHP demandées par le serveur Nginx. error_reporting=E_ALL signifie afficher toutes les informations sur le niveau d'erreur. fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_error.log"; signifie afficher les informations d'erreur PHP dans le fichier /var/log/nginx/php_error.log.

Après avoir modifié le fichier de configuration, rechargez le serveur Nginx :

sudo systemctl restart php7.4-fpm
3. Mauvais paramètres dans le fichier de configuration PHP

Le fichier de configuration de PHP est généralement /etc/php/7.4/fpm/php.ini , recherchez la ligne <code>error_reporting et configurez-la pour afficher tous les messages d'erreur : 🎜rrreee🎜 Recherchez ensuite la ligne display_errors et définissez-la sur On, afin que tous les messages d'erreur PHP puissent être affichés sur la page Web : 🎜rrreee🎜 Enregistrez ensuite le fichier et redémarrez PHP-FPM : 🎜rrreee🎜🎜 4. Résumé 🎜🎜🎜 Configurez le serveur Web Nginx pour afficher une erreur PHP messages L'astuce cachée consiste à le configurer à la fois à partir du serveur Nginx et du processus PHP. Cela peut aider les développeurs à identifier rapidement les erreurs dans le code, à résoudre rapidement les problèmes et à améliorer la qualité du code. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn