Ошибки в Unknown on Line 0 после обновления PHP
Как мне решить проблему с этой странной проблемой? Я обновил PHP на своем VPS до 5.6.0 и теперь на этом конкретном script Я получаю эти две ошибки, когда я их не получал, и они действительно не дают мне ничего, чтобы пройти.
<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 />
Этот script просто запускает некоторые команды для статуса различных сервисов через shell_exec
и возвращает ответ как JSON. Он не использует никаких пост-данных или даже содержит $_POST
в файле. Первое, что есть в моем script:
<?php
error_reporting(0);
header('Content-Type: application/json');
Я прокомментировал эту последнюю строку и все еще получил предупреждение об изменении информации заголовка. Я не знаю, почему эти ошибки возникают, когда они отлично работали в старой версии (которая была 5.5.16).
Ответы
Ответ 1
Вы не можете использовать заголовок(), как только текст будет выведен в браузер. Выполняя, как сказано в сообщении об ошибке:
установите 'always_populate_raw_post_data' в '-1' в php.ini и вместо этого используйте поток ввода php://
вам следует избавиться от этих ошибок.
Ответ 2
$HTTP_RAW_POST_DATA
устарел (это вызывает проблему с заголовком)
Попробуйте следующее:
<?php
$postdata = file_get_contents("php://input");
?>
Прочитайте http://php.net/manual/en/reserved.variables.httprawpostdata.php