Я пытаюсь получить страницу с другого хоста. Я делаю так, как говорится в руководстве hph:
$page = file_get_contents('http://www.example.com/'); echo $page;
Но он терпит неудачу, и в журнале apache я получаю следующее:
[Mon Oct 12 18:58:47.676454 2015] [:error] [pid 2971] [client 127.0.0.1:49434] PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: No address associated with hostname in /var/www/html/digest/ftry.php on line 2 [Mon Oct 12 18:58:47.704659 2015] [:error] [pid 2971] [client 127.0.0.1:49434] PHP Warning: file_get_contents(http://www.example.com/): failed to open stream: php_network_getaddresses: getaddrinfo failed: No address associated with hostname in /var/www/html/digest/ftry.php on line 2
Пытаясь выяснить причину неудачи, я проверил, что говорит nslookup
. Когда я запускаю nslookup http://www.example.com/
он отвечает примерно так:
nslookup http://www.example.com/ Server: 94.242.57.130 Address: 94.242.57.130#53 ** server can't find http://www.example.com/: NXDOMAIN
Когда я удаляю http://
из имени домена, он отлично работает, возвращает ip. Но когда я пытаюсь получить файл с file_get_contents
без http://
, он ищет файл в локальной файловой системе (и так оно и должно быть).
Я проверил phpinfo
, allow_url_fopen
как на локальном, так и на главном уровнях. Я установил 94.242.57.130
имен в свой resolv.conf
94.242.57.130
(ближайший общедоступный dns).
Похоже, что allow_url_fopen
отключен на вашем php.ini
, поэтому file_get_contents
не работает.
Вместо этого попробуйте использовать завиток :
$url = "http://www.example.com/"; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $page = curl_exec($ch); curl_close($ch); echo $page;