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
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
/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!