get_file_contents завершается с кодом ответа 400 - PullRequest
0 голосов
/ 07 октября 2009

У меня самая странная проблема. Я пытаюсь получить результаты выполнения CGI-скрипта на одном сервере с get_file_contents, и он работает везде, кроме моей локальной машины под Ubuntu.

Он работает, когда я прошу его получить URL-адрес с другого сервера (тот же сценарий, запущенный на производстве), он работает на другом сервере, я абсолютно уверен, что у меня установлен allow_url_fopen Но каждый раз, когда я пытаюсь получить эту страницу с локального сервера, я получаю failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request на стороне PHP и [error] [client 127.0.0.1] request failed: error reading the headers в журнале ошибок Apache.

Так что я могу с этим сделать, какие заголовки я должен передать, чтобы Apache не отказывал мне или, альтернативно, какие параметры конфигурации я должен настроить для получения тех же результатов?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2010

Используя file_get_contents, попробуйте вручную принудительно установить заголовки HTTP , вот так.

<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
// gave it a mime-type, also forced text plain.
// of course,  add any other headers you need.
    'header'=>"Accept: text/plain\r\n" .
              "Content-Type: application/x-www-form-urlencoded\r\n"
  )
);

// create the stream.
$context = stream_context_create($opts);

// open the file using the HTTP headers set above
$file = file_get_contents("your_url_here", false, $context);
?>

Если это не сработало, задумывались ли вы об использовании cURL для обработки вашего запроса?

0 голосов
/ 07 октября 2009

Какое имя хоста вы используете для ссылки на ваш локальный веб-сервер? Может быть, вы называете это "localhost", и он ожидает реального доменного имени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...