如何隐藏已经发送的标题"我的PHP脚本中的警告?

时间:2014-10-02 01:15:54

标签: php wordpress

我编写了包含WordPress功能的下面脚本(剪辑),但是当其中一个插件尝试启动会话时,它似乎已经启动了:

<?php
define('WP_USE_THEMES', false);
require('../../../wp-blog-header.php');

...
?>

我在php错误日志中得到以下内容:

<b>Warning</b>:  session_start(): Cannot send session cookie - headers already sent in <b>/home/sp32/public_html/wp-content/plugins/woocommerce-abandon-cart-pro/woocommerce-ac.php</b> on line <b>44</b><br />
<br />
<b>Warning</b>:  session_start(): Cannot send session cache limiter - headers already sent in <b>/home/sp32/public_html/wp-content/plugins/woocommerce-abandon-cart-pro/woocommerce-ac.php</b> on line <b>44</b><br />

我假设这是插件本身的错误,但是我想阻止这些警告在我的日志文件中显示我的特定脚本。我该怎么办呢?理想情况下,我不想隐藏所有警告,仅此一项。

请注意,这不是重复 - 我不是在问如何解决问题(因为问题在于第三方插件),我问如何抑制警告消息。

1 个答案:

答案 0 :(得分:2)

我在这里看到三个选项:

  1. 修复有问题的代码。如您所述,使用第三方代码可能不是最佳选择。

  2. 要求退款,并用写好的内容替换此插件;特别是,遵守公认的编码标准,如PSR-2或梨。

  3. 查找包含违规文件的位置(或调用违规函数并将其包装在调用中以更改错误报告级别(下面的代码)。这样做的缺点是您的会话将无法工作,因为标题已经被插件发送;这可以防止设置会话cookie,使得php会话无法识别浏览器。

     $previousErrorLevel = error_reporting();
    error_reporting(\E_ERROR);
     //offending code inclusion or call here
    error_reporting($previousErrorLevel);