Home  >  Article  >  Backend Development  >  How nginx php-fpm outputs php error log

How nginx php-fpm outputs php error log

藏色散人
藏色散人Original
2020-08-13 09:19:152744browse

php fpm output error configuration method: first open the "php-fpm.conf" file; then add the content "error_log = log/error_log"; then open the "php.ini" file and add the content " log_errors = On”; finally restart.

How nginx php-fpm outputs php error log

Recommended: "PHP Video Tutorial"

In this article, in the nginx server, configure Interested friends can refer to the method of php-fpm outputting php error log. I hope it will be helpful to everyone.


Since nginx is only a web server, the access log of nginx only records the accessed pages, and there will be no php error log information.

nginx sends the request to php to the php-fpm fastcgi process for processing. The default php-fpm will only output the error message of php-fpm. In the errors of php-fpm The errorlog of php cannot be seen in the log

Reason:
The default configuration file of php-fpm php-fpm.conf is to close the error output of the worker process and redirect them directly to /dev/ null, so we are in nginx error Neither the log nor the errorlog of php-fpm can see the error log of php.

How to solve the problem that php-fpm does not record php error logs under nginx:

1. Modify the configuration in php-fpm.conf and add it if there is no configuration

catch_workers_output = yes
error_log = log/error_log

2 .Modify the configuration in php.ini, if not, add

log_errors = On
error_log = "/usr/local/lnmp/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE

3. Restart php-fpm,
When PHP execution errors, you can see the error log in "/usr/local/lnmp /php/var/log/error_log"

Please note:
1. The php_admin_value[error_log] parameter in php-fpm.conf will overwrite the error_log parameter in php.ini
So Make sure that the final error_log file you see in phpinfo() has writable permissions and does not set the php_admin_value[error_log] parameter, otherwise the error log will be output to the error log of php-fpm.

2. The location of php.ini cannot be found. Use php's phpinfo() to view the results.

3. How to modify the PHP error log? Output to the page or screen
Modify php.ini

display_errors = off //不显示错误信息(不输出到页面或屏幕上)
log_errors = on //记录错误信息(保存到日志文件中)
error_reporting = E_ALL //捕获所有错误信息
error_log = //设置日志文件名

Modify the above configuration in the program

ini_set("display_errors",0)
ini_set("error_reporting",E_ALL); //这个值好像是个PHP的常量
ini_set("error_log","<日志文件名>")
ini_set("log_errors",1);

4. How to output the php error log to the nginx error log
In PHP 5.3.8 and earlier versions, when PHP runs through FastCGI and an error occurs during user access, it will first be written to PHP's errorlog
If PHP's errorlog cannot be written, it will The error content is returned to the FastCGI interface, and then nginx records it in nginx's errorlog after receiving the error return from FastCGI
In PHP 5.3.9 and later versions, PHP only tries to write to the PHP errorlog after an error occurs. If it fails, it will not return to FastCGI, and the error log will be output to the error log of php-fpm.
So if you want to output the php error log to the nginx error log, you need to use a version before php5.3.8, and the error_log of php in the configuration file is not writable by the php worker process.

The above is the detailed content of How nginx php-fpm outputs php error log. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn