当我执行一个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);
}
答案 0 :(得分:11)
此问题是由curl版本引起的,您可以通过终端检查您的curl版本吗
curl --version
和php --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获取数据。