Curl: отображение ошибки «Не удается разрешить доменное имя» для всех локальных сайтов из PHP - PullRequest
0 голосов
/ 07 февраля 2019

Сегодня мой 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

Некоторая отладочная информация:

  • Пинг в этот домен с терминала работает нормально (показывает localhost)
  • Все работает нормально, даже если я запускаю curl -v local-domain.test из терминала
  • Я пытался использовать опцию CURLOPT_DNS_USE_GLOBAL_CACHE.
  • Очистил весь DNS-кэш моей машины из терминала

Может быть, я забыл добавить что-то к php.ini каждого PHP?Кроме того, все работало нормально, пока я не обновил их все.

...