卷曲:显示来自PHP

时间:2019-02-07 10:37:44

标签: php curl dnsmasq

今天,我的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;
    }

如果我将该主机添加到我的/ etc / hosts /文件中,那么所有工作就会开始,但是在更新PHP之前,我拥有大量的域列表 在我这边一切都很好。我正在使用dnsmasq作为动态主机解析工具。

  • 操作系统: MacOs High Siera
  • Apache: 2.4.37
  • PHP:多个PHP版本,从5.6-7.3版

一些调试信息:

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

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

1 个答案:

答案 0 :(得分:1)

easier to avoid logical errors

This answer为我工作。

运行:

brew uninstall curl-openssl --ignore-dependencies

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

...然后是valet restart

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