Почему я получаю это сообщение «Не удалось открыть поток: HTTP-запрос не выполнен!»?

1

Я понимаю, что этот вопрос уже ответил несколько раз, но я не мог найти решение для этого конкретного случая. Я продолжаю получать

"Warning: file_get_contents (http://www.myserver.com/api/v1/123) [function.file-get-contents]: не удалось открыть поток: HTTP-запрос не удался! HTTP/1.1 500 Внутренняя ошибка сервера в /home/content/d/a/v/server/html/getFile.php в строке 44 "

Мой код:

$id  = $_GET['id']; 
//$id = urlencode(stripslashes($id)); <- What I´ve tried. No dice.
//$id = "123";    <- hardcoding the ID solves the problem.

// Create stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Token: abc\r\n" .
              "Token-Client: xyz\r\n" 
  )
);

$context = stream_context_create($opts);
// Open the file
$file = file_get_contents('http://www.myserver.com/api/v1/'.$id , false, $context);

Мой запрос:

http://myserver.com/getFile.php?id=123

1) urlencode не имеет значения. В аргументе нет пробелов или специальных символов. Я тоже пробовал stripslashes().

2) Если я hardcode $ id, как в $id="123"; он отлично работает.

3) Я заметил ту же ошибку, когда получаю значение для $ id из базы данных, как в $id = $row["id"]; (Я не включил весь код, чтобы он не загрязнял вопрос).

Я пробовал все решения, которые я мог найти на Форуме. Может, кто-то столкнулся с этой проблемой раньше? Спасибо за вашу помощь.

  • 0
    Вы пытались прочитать ошибку 500, которая возвращается? Как на самом деле читать это?
  • 0
    Я работаю в этом прямо сейчас. Мой чертов план - не записывать журналы ошибок (я понятия не имею, почему), поэтому я не вижу ошибки.
Теги:
file-get-contents

1 ответ

0

Решила проблему с помощью curl.

$url = 'http://www.myserver.com/api/v1/'.$id;

$ch = curl_init();
$header=array(
    'method'=>"GET",
    'header'=>"Token: abc\r\n" .
              "Token-Client: xyz\r\n" 
  );

    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,0);
    curl_setopt( $ch, CURLOPT_COOKIESESSION, true );

    curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt');
    curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt');
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
    $file=curl_exec($ch);
    curl_close($ch);

Работала хорошо, но я не знаю, почему я получаю ошибку, используя file_get_contents.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню