У меня возникают проблемы со следующим кодом:
function http_file_exists($url){ $f=fopen($url,"r"); if($f){ fclose($f); return true; } else { return false; }
} $ url = "http://www.minhemmelighed.dk/Graphics/Products/55.jpg";
print http_file_exists ($ url);
Ошибка, которую он возвращает:
Предупреждение: fopen (): php_network_getaddresses: getaddrinfo не удалось: имя или служба неизвестны в /srv/http/webshop3/image_scraper/test.php в строке 6 Предупреждение: fopen (http://www.minhemmelighed.dk/Graphics/Products/ 55.jpg): не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось: имя или услуга, неизвестные в /srv/http/webshop3/image_scraper/test.php в строке 6
Что я могу сделать по этому поводу? Я перезагрузил сервер несколько раз.
Для записи:
Я могу получить доступ к рассматриваемому веб-сайту через браузер
Я запускаю LAMP на Arch Linux
Перезагрузка сервера UNIX крайне затруднительна. Похоже, вам нужно проверить конфигурацию сервера имен на сервере. На консоли веб-сервера (зарегистрированного как пользователь php, возможно, apache
или www-data
), проверьте
dig www.minhemmelighed.dk
Если это выводит сообщение об ошибке, проверьте /etc/resolv.conf
. Прокомментируйте все строки и добавьте
nameserver 8.8.8.8 # Google's public DNS server
Если это решает проблему, обратитесь к администратору исходного сервера имен (или просто используйте 8.8.8.8
). Если это не так, проверьте подключение и брандмауэры.
Для тех из вас, кто работает с очень закрытым дистрибутивом, например CentOS, это, вероятно, функция безопасности SELinux, как я обнаружил в своих системах.
В командной строке введите:
getsebool -a | grep httpd
и искать
httpd_verify_dns -> off
если это так, вам нужно установить его в On с помощью следующей команды
setsebool httpd_verify_dns = 1
или постоянно с:
setsebool -P httpd_verify_dns = 1
не забудьте перезапустить httpd с помощью:
перезагрузка службы httpd после каждого изменения
Надеюсь, это поможет
отметка