Я работаю удаленно и могу получить доступ к внутренним серверам через VPN. Когда мое VPN-соединение установлено, я могу подключиться к своему веб-серверу с помощью curl:
curl http://sub.mydomain.com
Я также могу подключиться к веб-серверу в браузере, перейдя на http://sub.mydomain.com
. Так что, похоже, это не проблема DNS с самим веб-сервером.
При разработке моего приложения Laravel 4.2 (PHP 5.6), обслуживаемого локально через Apache, однако, php 's curl_exec
не удается разрешить хост. Как ни странно, php gethostbyname($hostname)
правильно разрешает хост. Я пытался форсировать IPv4, так как читал, что IPv6 может привести к сбоям этого типа, но безуспешно.
// works
$ip = gethostbyname($hostname);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://$ip/path");
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_exec($ch);
// does NOT work
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://$hostname/path");
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_exec($ch);
Это оставляет меня в растерянности. Я не понимаю, как PHP curl обрабатывает разрешение DNS (явно не с gethostbyname
). Я также не совсем понимаю, как в первую очередь работают DNS-запросы в частных сетях. Так что я действительно не знаю, где искать PHP curl для разрешения моих личных хостов.