Во-первых, это, вероятно, просто опечатка в вашем вопросе, но третьи аргументы для file_get_contents () должны быть вашим потоковым контекстом, а НЕ массивом опций. Я провел быстрый тест с чем-то вроде этого, и все заработало как положено
$opts = array('http' => array('header'=> 'Cookie: ' . $_SERVER['HTTP_COOKIE']."\r\n"));
$context = stream_context_create($opts);
$contents = file_get_contents('http://example.com/test1.txt', false, $context);
echo $contents;
Ошибка указывает, что сервер возвращает 404. Попробуйте извлечь URL с компьютера, на котором работает PHP * и , а не с рабочей станции / настольного компьютера / ноутбука. Возможно, ваш веб-сервер испытывает проблемы с доступом к сайту, на вашем локальном компьютере есть кэшированная копия или какая-то другая проблема с сетью.
Убедитесь, что вы повторяете свой точный запрос при запуске этого теста, включая cookie, который вы отправляете (командная строка curl хороша для этого). Вполне возможно, что рассматриваемая страница может нормально загружаться в браузере без cookie, но когда вы отправляете cookie, сайт на самом деле возвращает 404.
Убедитесь, что у $ _SERVER ['HTTP_COOKIE'] есть файл cookie, который, как вы думаете, есть.
Если вы просматриваете экран, скачайте Firefox и копию расширения LiveHTTPHeaders. Выполните все необходимые шаги, чтобы перейти на любую нужную страницу в Firefox. Затем, используя выходные данные LiveHTTPHeaders, воссоздайте точно такой же запрос. Включите каждый заголовок, , а не только файлы cookie.
Наконец, PHP Curl существует по причине. Если это вообще возможно, (я не спрашиваю!) Используйте его вместо этого. :)