2014-10-15 2 views
1

Я пытаюсь вызвать URL-адрес с PHP, чтобы проверить, существует ли он и доступен.Предотвращение php_network_getaddresses: getaddrinfo failed:

Мой исходный код был

fopen('http://'.$this -> url, 'r'); 

Но он бросает на следующие ошибки каждый раз, когда URL недостижим:

fopen(http://dwzegdzgwedzgew.com): failed to open stream: php_network_getaddresses: getaddrinfo failed 
php_network_getaddresses: getaddrinfo failed: 

Оператор ошибки (@) игнорируется в этом случае в качестве ISN ошибки 't брошенный fopen сам, но при разрешении asdress. Поэтому я думал, что должен это сделать:

@fopen(@'http://'.$this -> url, 'r'); 

, но он также продолжает выдавать ошибку.

Есть ли возможность исключения ошибок при проверке наличия URL-адреса в PHP перед его открытием?

ответ

1

Что такое сообщение об ошибке $ressource = @fopen('http://' . $this->url, 'r');?

<?php 


$urls = array('kihgkighuhgkig.li', 'google.com', 'adsfafdf.fr'); 
foreach ($urls as $url) 
{ 
    if (gethostbyname($url) != $url) 
    { 
     $ressource = fopen('http://' . $url, 'r'); 
     var_dump($url, $ressource); 
    } 
} 

Выход:

$> php test.php 
string(10) "google.com" 
resource(6) of type (stream) 
+0

Еореп (http://kihgkighuhgkig.li): не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось: Der angegebene Хост IST неизвестно. Редактировать: Извините за немецкий, «unknwon host» –

+0

Вы можете попробовать выполнить запрос ping перед использованием fopen. Но если он находится в производстве, скройте ошибки 'error_reporting (0);' – IgiX

+0

Я не могу скрыть ошибки для всего проекта, так как проект имеет собственную обработку ошибок. Кроме того, чтобы выполнить ping в PHP, вам нужно создать сокет, который выдает точно такую ​​же ошибку и имеет проблемы, указанные выше в OP при попытке решить хост. –

Смежные вопросы