Я понимаю, что этот вопрос уже ответил несколько раз, но я не мог найти решение для этого конкретного случая. Я продолжаю получать
"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"];
(Я не включил весь код, чтобы он не загрязнял вопрос).
Я пробовал все решения, которые я мог найти на Форуме. Может, кто-то столкнулся с этой проблемой раньше? Спасибо за вашу помощь.
Решила проблему с помощью 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.