Как загрузить файл по протоколу https с помощью php
Мне нужно загрузить xml-файл с помощью PHP. Я могу прочитать содержимое файла, установив следующие параметры при вызове curl.
curl_setopt ($http, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($http, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($http,CURLOPT_USERAGENT,'XYZ');
Как видно из приведенного выше фрагмента, мне нужно сделать VERIFYHOST ложным, а также установить явный АГЕНТ пользователя при вызове для чтения файла, потому что файл не является общедоступным, и только определенное приложение может сделать вызов для его чтения (методы веб-безопасности и прочее)
Но как мне загрузить то же самое файл, я пробовал readfile
, fopen/fpassthru
, file_get_contents
но, похоже, ничего не работает.
Прочитанный файл выдает ошибку failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
Есть ли способ предоставить варианты, подобные curl, с помощью fopen
или readfile
, я думаю, что это может быть самым простым подходом к решению этой проблемы. Я не смог найти большой помощи в документации PHP.
Пожалуйста, помогите.
1 answers
Вам необходимо подключить свой специальный агент пользователя к контексту потока.
Из http://www.php.net/manual/en/wrappers.http.php
Разрешает доступ только для чтения к файлам/ресурсам через HTTP 1.0, используя метод HTTP GET. Заголовок Host: отправляется с запросом на обработку виртуальных хостов на основе имен. Если вы настроили строку user_agent с помощью файла php.ini или контекста потока, она также будет включена в запрос.
Пример № 2 по ссылке выше:
<?php
ini_set('user_agent', "PHP\r\nX-MyCustomHeader: Foo");
$fp = fopen('http://www.example.com/index.php', 'r');
?>