由于某种原因,此 curl 命令不起作用


This curl command doesn't work for some reason

我有一个需要从PHP脚本"调用"的URL。该 URL 使用 Tropo 的 API 进行电话呼叫,因此很容易验证它是否被调用。

我的PHP看起来像这样:

<?php
$oid=$_GET["oid"];
$notify_url = "http://mydomain.com/somepath/".$oid;
echo $notify_url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $notify_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
mail('me@gmail.com', 'cURL', "Did a cURL");
?>

这将打印出 $notify_url 变量,当我获取打印的值并将其输入浏览器窗口时,我得到了所需的结果,即电话呼叫我的手机。

我已经在两个声称支持CURL的网络主机上尝试过这个,一个是付费的(crazydomains.com.ayu - 刚刚挂断电话支持),另一个是 000webhost.com

我做错了什么吗?这个有点令人困惑,因为它应该很简单。

编辑:我按预期收到邮件。

编辑2:如果您对我如何调试它有任何想法,我将不胜感激。

编辑3:正如Juhana建议的那样,我在curl_exec后添加了echo curl_error();,但出现此错误...

Warning: Wrong parameter count for curl_error() in /home/a5352876/public_html/curl.php on line 15

编辑4:将echo curl_error()更改为echo curl_error($ch)并得到消息couldn't connect to host所以这似乎是问题所在。

现在的问题是,为什么它不能连接到可以通过浏览器轻松访问的主机,我可以在任何地方寻找它吗?

如果您的主机启用了 HTTP 包装器,并且启用了allow_url_fopen配置选项,那么您不需要 cURL,尤其是对于如此简单的请求。

看起来您需要做的就是打开一个URL,您可以使用fopen()轻松完成此操作:

$oid = $_GET["oid"];
$notify_url = "http://mydomain.com/somepath/".$oid;
$fh = fopen( $notify_url, 'r');
fclose( $fh);