Я использую после функции PHP:
file_get_contents('http://example.com');
Каждый раз, когда я делаю это на определенном сервере, результат пуст. Когда я делаю это где-либо еще, результат - то, чем может быть содержание страницы. Когда я однако, на сервере, где результат пуст, использую функцию локально - не получая доступ к внешнему URL (file_get_contents('../simple/internal/path.html');
), это действительно работает.
Теперь, я вполне уверен, это имеет некоторое отношение к определенной конфигурации php.ini. То, в чем я однако не уверен, который. Помогите.
Требуемый параметр - allow_url_fopen
.
У вас есть два способа обойти это без изменения php.ini: один из них - использовать fsockopen ()
, а другой - использовать cURL .
В любом случае я рекомендую использовать cURL вместо file_get_contents ()
, поскольку он был создан для этого.
Дополняя ответ Айлин, вы можете использовать функцию, подобную приведенной ниже, для имитации поведения file_get_contents:
function get_content($URL){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $URL);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
echo get_content('http://example.com');
Связано с параметром конфигурации ini allow_url_fopen
.
Вы должны знать, что включение этой опции может сделать некоторые ошибки в вашем коде уязвимыми.
Например, этот сбой при проверке входных данных может превратиться в полноценную уязвимость удаленного выполнения кода:
copy($_GET["file"], ".");