我编写了以下函数,这是我在其他地方使用的代码,并稍作修改以作为函数工作(在函数参数中使用$ url):
function curl2str($url) {
$cURL = curl_init($url);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_CONNECTTIMEOUT, 5);
$data = curl_exec($cURL);
curl_close($cURL);
return $data;
}
我只想要一个函数将URL返回到字符串中,以获得快速简便的API。我传递的URL是有效的,当我把它放入浏览器时工作正常。我这样称呼它:
<?=curl2str("**valid URL here**");?>
由于某种原因,它只是返回false。我做错了什么?
更新
当我将此问题网址放入$url
时,我会收到回复。但是,当我使用我的自定义URL,它在浏览器中工作正常,只是显示目录中的文件列表时,我得到bool:false。
更新2 除了我试图访问的域之外,似乎任何域都可以正常工作。事实上,这是同一台服务器上的根域,我从子域运行此脚本,但由于basedir_restrictions,我无法从子域访问文件夹。所以我写了一个小PHP来获取文件夹的内容,并将其作为序列化数组输出到浏览器(未安装JSON)。但我根本无法得到这个根域的回复。它在浏览器中工作正常,而不是在cURL中。其他一切在cURL中运行良好。
:(
答案 0 :(得分:5)
在您的函数中尝试此代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if(curl_errno($ch))
echo 'Curl error: '.curl_error($ch);
curl_close ($ch);
注意:curl_errno($ch);
如果cURL发生任何错误,则返回错误编号&gt; 0并使用 curl_error($ch);
查看cURL中的错误
答案 1 :(得分:2)
我使用这个功能:
function curl($url, $cookie = false, $post = false, $header = false, $follow_location = false, $referer=false,$proxy=false)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $follow_location);
if ($cookie) {
curl_setopt ($ch, CURLOPT_COOKIE, $cookie);
}
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$response = curl_exec ($ch);
curl_close($ch);
return $response;
}