cURL + Laravel Valet + dnsmasq无法正常工作

时间:2019-02-14 10:40:42

标签: php laravel curl dnsmasq laravel-valet

当我执行一个PHP脚本,该脚本向在Mac上使用Laravel Valet / dnsmasq设置的.test域运行一个cURL请求时,会显示此错误:

  

无法解析:mydomain.test(未找到域名)

当我在浏览器中测试域时,就可以了。
在终端中运行curl -Ik https://mydomain.test时,我得到了HTTP / 2 200代码,所以没问题。
当我在终端中运行curl -k https://mydomain.test时,我得到了页面的源代码,所以没关系。

为什么它不能与PHP中的cURL一起使用?我很绝望...

更新

由于流行需求;-)这是我的cURL代码。您不能做得更简单:

try {
    $ch = curl_init( "http://mydomain.test" );
    curl_exec( $ch );
    dump(curl_error($ch));
    curl_close( $ch );
} catch (Exception $e) {
    var_dump($e);
}

5 个答案:

答案 0 :(得分:11)

此问题是由curl版本引起的,您可以通过终端检查您的curl版本吗

curl --versionphp --ri curl

运行php --ri curl时,您会看到cURL Information => 7.63.0这一行。

然后,您可以比较您的版本,然后查看哪个curl版本不适用于dnsmasq。

我遇到了这个问题,我的curl版本在php中为7.64.0。


要解决该问题:

您可以卸载 curl-openssl ,此命令将删除curl-openssl的最新版本:

brew uninstall curl-openssl --ignore-dependecies

然后重新启动php:

brew services restart php

重新启动后,php将看到/usr/bin/curl的curl,并且该版本可以访问本地域。

答案 1 :(得分:1)

我通过将initializeCountdown添加到domain.test

解决了这个问题

即在主机文件中添加:/etc/hosts

答案 2 :(得分:0)

...。重新启动后,php将看到curl / usr / bin / curl,此版本可以访问本地域。

也重新启动了代客服务:代客重新启动

答案 3 :(得分:0)

internalDisplay添加到我的DNS设置中为我解决了此问题。 即127.0.0.1

然后运行System Preferences -> Network -> Advance -> DNS

答案 4 :(得分:-1)

就花了最后一个小时。我在通过PHP进行卷曲时遇到了类似的问题,但没有专门针对SSL的代客解决。我尝试更改curl-openssl版本,并在主机文件等中设置我的域。除以下内容外,没有任何其他作用:

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

这是由于Curl未验证代客SSL。将这个选项添加到curl请求后,便可以从本地代客url获取数据。