PHP – Тип содержимого, не заданный приложением / x-www-form-urlencoded

В течение 2 дней у меня возникают проблемы с моим PHP-скриптом на моем сервере. Я ничего не изменил, и внезапно это уже не сработало.

Вот код:

$query = http_build_query($data); $options = array( 'http' => array( 'header' => "Content-Type: application/x-www-form-urlencoded\r\n". "Content-Length: ".strlen($query)."\r\n", 'method' => "POST", 'content' => $query, ), ); $opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n",'method' => 'POST', 'content' => http_build_query($data),)); $contexts = stream_context_create($opts); $context = stream_context_create($options); $result = file_get_contents($url, false, $contexts, -1, 40000); 

Я получаю эти сообщения об ошибках:

Примечание: file_get_contents (): тип содержимого, не заданный приложением / x-www-form-urlencoded в

Предупреждение: file_get_contents ( https://mobile.dsbcontrol.de ): не удалось открыть поток: HTTP-запрос не удался! Ошибка внутреннего сервера HTTP / 1.1 500

Но когда я пытаюсь запустить скрипт, он работает отлично.

Вы передаете $contexts к file_get_contents() и который содержит только заголовок User-Agent в массиве $opts . Все остальные заголовки и параметры находятся в массиве $options который вы добавляете в $context но не используете. Пытаться:

 $query = http_build_query($data); $options = array( 'http' => array( 'header' => "Content-Type: application/x-www-form-urlencoded\r\n". "Content-Length: ".strlen($query)."\r\n". "User-Agent:MyAgent/1.0\r\n", 'method' => "POST", 'content' => $query, ), ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context, -1, 40000); 

Хотя существующие ответы не сработали для меня, мне удалось решить проблему следующим образом:

Руководство PHP говорит, что params должен быть ассоциативным массивом в формате $arr['parameter'] = $value . Обратитесь к параметрам контекста для перечисления стандартных параметров потока.


     $ header = массив (
             «Content-Type: application / x-www-form-urlencoded»,
             «Content-Length:» .strlen ($ postdata)
         );


     $ packet ['method'] = "POST";
     $ packet ['header'] = implode ("\ r \ n", $ header);
     $ packet ['content'] = $ postdata;

     $ transmission_data = array ('http' => $ packet);
     $ context = stream_context_create ($ transmission_data);