nginx est un serveur Web, donc le journal d'accès de nginx enregistre uniquement les pages consultées, et il n'y aura aucune information du journal d'erreurs de php.
nginx envoie la demande de php au processus php-fpm fastcgi pour traitement. Le php-fpm par défaut affichera uniquement le message d'erreur de php-fpm, et php ne sera pas visible dans le journal des erreurs de php-. fpm. La raison du journal des erreurs
est que le fichier de configuration php-fpm php-fpm.conf désactive par défaut la sortie d'erreur du processus de travail et les redirige directement vers /dev/null, nous utilisons donc Le journal des erreurs de nginx et le journal des erreurs de php-fpm ne peuvent pas être vus dans le journal des erreurs de php.
Le débogage est très pénible. Façons de résoudre le problème selon lequel php-fpm n'enregistre pas les journaux d'erreurs php sous nginx :
1 Modifiez la configuration dans php-fpm.conf et ajoutez
catch_workers_output = yes error_log = log/error_log
2. Modifiez la configuration dans php.ini, sinon ajoutez
log_errors = On error_log = "/usr/local/lnmp/php/var/log/error_log" error_reporting=E_ALL&~E_NOTICE
3. Redémarrez php-fpm
Vous pouvez. voir quand les erreurs d'exécution PHP Le journal des erreurs se trouve dans "/usr/local/lnmp/php/var/log/error_log"
Veuillez noter :
1. -fpm.conf Le paramètre php_admin_value[error_log] dans php.ini remplacera le paramètre error_log dans php.ini
alors assurez-vous que le fichier error_log final que vous voyez dans phpinfo() dispose d'autorisations d'écriture et ne définit pas le php_admin_value[error_log ], sinon le journal des erreurs sera affiché dans le journal des erreurs de php-fpm.
2. L'emplacement de php.ini est introuvable, utilisez phpinfo() de php pour afficher les résultats
3 Comment modifier le journal des erreurs PHP pour ne pas le faire. être affiché sur la page ou l'écran
Modifier php.ini
display_errors = off //不显示错误信息(不输出到页面或屏幕上) log_errors = on //记录错误信息(保存到日志文件中) error_reporting = E_ALL //捕获所有错误信息 error_log = //设置日志文件名
Modifier la configuration ci-dessus dans le programme
ini_set("display_errors",0) ini_set("error_reporting",E_ALL); //这个值好像是个PHP的常量 ini_set("error_log","<日志文件名>") ini_set("log_errors",1);
4 Comment afficher le journal des erreurs php. au journal des erreurs nginx
Dans PHP 5.3.8 et versions antérieures, lorsque PHP s'exécute via FastCGI et qu'une erreur se produit lors de l'accès utilisateur, elle sera d'abord écrite dans le journal des erreurs de PHP
Si le journal des erreurs de PHP ne peut pas être écrit, l'erreur le contenu sera renvoyé Donnez l'interface FastCGI, puis nginx l'enregistre dans le journal des erreurs nginx après avoir reçu le retour d'erreur de FastCGI
Dans PHP 5.3.9 et versions ultérieures, après qu'une erreur se produit, PHP essaie uniquement de l'écrire dans le Journal des erreurs PHP. En cas d'échec, il ne reviendra plus à FastCGI et le journal des erreurs sera affiché dans le journal des erreurs de php-fpm.
Donc, si vous souhaitez afficher le journal des erreurs php dans le journal des erreurs nginx, vous devez utiliser une version antérieure à php5.3.8, et le error_log de php dans le fichier de configuration n'est pas accessible en écriture par le processus de travail php.
Pour plus de connaissances sur PHP, veuillez visiter le Site Web PHP chinois !
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!