我远程工作,可以通过 VPN 访问内部服务器。当我的 VPN 连接建立后,我可以通过 curl 访问我的网络服务器:
curl http://sub.mydomain.com
我还可以在浏览器中访问http://sub.mydomain.com. 所以这似乎不是网络服务器本身的 DNS 问题。
然而,当开发我的 Laravel 4.2 应用程序 (PHP 5.6) 通过 Apache 在本地提供服务时,phpcurl_exec无法解析主机。奇怪的是,phpgethostbyname($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 来解析我的私人主机。
ibeautiful