PHP升级后第0行的未知错误

时间:2014-09-22 23:31:39

标签: php

如何解决这个奇怪的问题呢?我在我的VPS上将PHP更新到5.6.0,现在在这个特定的脚本上,当我之前没有得到它们时,我得到了这两个错误,而且他们真的不给我任何东西。

<br />
<b>Deprecated</b>:  Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in <b>Unknown</b> on line <b>0</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent in <b>Unknown</b> on line <b>0</b><br />

此脚本只是通过shell_exec运行一些命令到各种服务的状态,并以JSON的形式返回响应。它不会使用任何发布数据,甚至不会在文件中包含$_POST。我脚本中的第一件事是:

<?php

error_reporting(0);

header('Content-Type: application/json');

我注释掉了最后一行,并且仍然收到有关修改标题信息的警告。我不知道为什么这些错误会在旧版本(5.5.16)上正常工作时出现错误

2 个答案:

答案 0 :(得分:8)

一旦将文本输出到浏览器,就无法使用header()。通过在错误消息中说:

  

在php.ini中将'always_populate_raw_post_data'设置为'-1'并使用php://输入流代替

你应该摆脱那些错误输出。

答案 1 :(得分:5)

不推荐使用

$HTTP_RAW_POST_DATA(这会导致标题出现问题)

试试这个:

<?php
$postdata = file_get_contents("php://input");
?> 

阅读http://php.net/manual/en/reserved.variables.httprawpostdata.php