PHP ini file_get_contents внешний URL

Я использую после функции PHP:

file_get_contents('http://example.com');

Каждый раз, когда я делаю это на определенном сервере, результат пуст. Когда я делаю это где-либо еще, результат - то, чем может быть содержание страницы. Когда я однако, на сервере, где результат пуст, использую функцию локально - не получая доступ к внешнему URL (file_get_contents('../simple/internal/path.html');), это действительно работает.

Теперь, я вполне уверен, это имеет некоторое отношение к определенной конфигурации php.ini. То, в чем я однако не уверен, который. Помогите.

39
задан Patrick McElhaney 15 August 2010 в 17:45
поделиться

3 ответа

Требуемый параметр - allow_url_fopen .

У вас есть два способа обойти это без изменения php.ini: один из них - использовать fsockopen () , а другой - использовать cURL .

В любом случае я рекомендую использовать cURL вместо file_get_contents () , поскольку он был создан для этого.

41
ответ дан 27 November 2019 в 02:26
поделиться

Дополняя ответ Айлин, вы можете использовать функцию, подобную приведенной ниже, для имитации поведения 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');
31
ответ дан 27 November 2019 в 02:26
поделиться

Связано с параметром конфигурации ini allow_url_fopen .

Вы должны знать, что включение этой опции может сделать некоторые ошибки в вашем коде уязвимыми.

Например, этот сбой при проверке входных данных может превратиться в полноценную уязвимость удаленного выполнения кода:

copy($_GET["file"], "."); 
4
ответ дан 27 November 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: