PHP-将警告/通知消息重定向到文件

时间:2018-12-18 09:17:52

标签: php wordpress

使用Rest API时,我得到如下响应:     
    通知:无法将 156
行中的 abc.php 中的DateTime类的对象转换为int {“ success”:false ,“ message”:“某事。”}

我想要做的是将这些警告重定向到文件,但吐出有效的响应。像这样:

在debug.log中:     
    通知:在日期 156

abc.php 中,日期时间类的对象无法转换为int

实际响应(不包括HTML部分):     {“成功”:false,“消息”:“某事。”}

我将标志设置如下: 尝试1:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', false);
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

第二次尝试是这样的:

ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

没有工作。有什么建议么 ? 顺便说一句,我已经检查了Wordpress和PHP论坛以及stackoverflow论坛。他们都没有谈论这种情况(或者我没有遇到过)。

2 个答案:

答案 0 :(得分:0)

您需要先关闭所有错误,可以使用以下方法完成:

error_reporting(0); 

然后启用错误日志记录并提供日志文件的路径:

ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");

将其放在您的php文件的顶部。

答案 1 :(得分:0)

Your server did not allow to modify your ini settings. 
So if you want to hide add error and notices you can add error_reporting(0); on config page.

// Turn off all error reporting
error_reporting(0);

Other options are available -
// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL & ~E_NOTICE);
// For PHP < 5.3 use: E_ALL ^ E_NOTICE

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);