Почему я получаю ошибку 500 при использовании file get contents (), но работает в браузере?

$html = file_get_contents("https://www.[URL].com"); 
echo $html;

производит это в логах ошибок:

PHP предупреждение: file_get_contents(https://www - ... [URL].com) [функция.file-get-contents]: не удалось открыть поток: не удалось выполнить HTTP-запрос! HTTP / 1.1 500 Внутренняя ошибка сервера в / Applications/MAMP/htdocs / test.php on line 13";

однако сайт отлично работает в браузере.

Я также попытался использовать cURL. Я не получаю никаких ошибок в файле журнала, но $html теперь вторит:

ошибка сервера в приложении"/".
Ссылка на объект не указывает на экземпляр объекта.

...дополнительная информация об отладке

есть идеи, как обойти это?

2 ответов


попробуйте этот метод:

$opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0\r\n"));
$context = stream_context_create($opts);
$header = file_get_contents('https://www.example.com',false,$context);

Если это не работает, может быть, вы не можете читать с https?


мне пришлось ввести больше данных в заголовок:

$opts = array('http' => array(
    'method' => "GET",
    'header' => "User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0\r\n"
    . "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
    . "Accept-Encoding:gzip, deflate\r\n"
    . "Accept-Language:cs,en-us;q=0.7,en;q=0.3\r\n"
    . "Connection:keep-alive\r\n"
    . "Host:your.domain.com\r\n"
    ));
$context = stream_context_create($opts);
$html = file_get_contents($sap_url, FALSE, $context);