Curl:显示所有PHP本地主机站点的“无法解析域名”错误

ale*_*kov 8 php dnsmasq curl

今天,我的cURL开始向我显示此错误,Could not resolve: {local-domain.test} (domain name not found) 如果我尝试从外部链接获取某些信息,则一切正常,但是本地站点无法正常工作。

所以,这是我的代码

public function send($type, $url, $data)
    {
        $type = strtolower($type);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        if ($type == 'post') {
            $urlWithData = http_build_query($data);
            curl_setopt($ch, CURLOPT_POST, count($data));
            curl_setopt($ch, CURLOPT_POSTFIELDS, $urlWithData);
        }

        $result = curl_exec($ch);
        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        $out = new \stdClass();
        $out->status = $status;
        $out->body = json_decode($result, true);

        return $out;
    }
Run Code Online (Sandbox Code Playgroud)

如果我将该主机添加到我的/ etc / hosts /文件中,那么所有主机都将开始工作,但是我拥有大量的域,并且在更新PHP之前,我都可以正常工作。我正在使用dnsmasq作为动态主机解析工具。

  • 操作系统:MacOs High Siera
  • 阿帕奇:2.4.37
  • PHP:多种PHP版本,从5.6-7.3

一些调试信息:

  • 从终端Ping到该域工作正常(显示localhost)
  • 即使我curl -v local-domain.test从终端运行,一切都很好
  • 我试图使用CURLOPT_DNS_USE_GLOBAL_CACHE选项。
  • 从终端清除了我机器的所有DNS缓存

也许我忘了php.ini在每个PHP中添加一些内容?另外,在我对它们全部进行更新之前,它们都工作良好。

小智 2

这个线程上的这个答案对我有用。

跑步:

brew uninstall curl-openssl --ignore-dependencies
Run Code Online (Sandbox Code Playgroud)

(删除最新版本的curl-openssl,确保您的系统和 PHP 使用的 curl 版本之间的奇偶校验)

...然后是valet restart

...允许本地curl正确解析代客主机名。