如何将PHP错误写入stderr?

时间:2014-07-06 20:02:11

标签: logging stdout php stderr

如何更改php-fpm.conf(或php.ini)以便将所有错误/警告/ ...写入stderr(或者stdout)?

我使用php5-fpm运行daemonize = no,并希望查看终端中的所有错误。

3 个答案:

答案 0 :(得分:2)

解决方案是设置......

; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Note: on highloaded environement, this can cause some delay in the page
; process time (several ms).
; Default Value: no
catch_workers_output = yes

答案 1 :(得分:0)

我不认为你能做到这一点,至少在我从你的问题中理解它的方式。

我会建议您通过终端实时查看php

第1步 - 将所有错误写入文件

更改您的php.ini文件,将每个错误写入文件/logs/phpLogs

第2步 - 错误'实时'使用tail

从命令行运行tail命令 tail -f /logs/phpLogs

第3步 - 可选择使用error_log

使用php error_log命令 error_log(print_r(debug_backtrace(), true ))

编辑 :(刚刚找到)我的anwser类似于How to log errors and warnings into a file

答案 2 :(得分:0)

是的,有可能不弄乱.ini配置。


使用Unix descriptor,例如以下示例之一:

php myscript.php 2> errors.log

或者通过使用hashbang,必须将文件设置为可执行文件:

./myscript 2> errors.log

从那里将记录所有错误。


要仅用errors.log编写,请在您的php脚本中的任何位置使用fwrite

<?php
fwrite(STDERR, "Some debug infos\n");

仅出现在errors.log中。在编写快速刷新脚本时很有用。

请注意,重新启动时会清除所有错误。


要监视错误,请使用tail -fwatch cat

watch cat errors.log