cURL函数没有响应

时间:2013-08-02 11:01:09

标签: php curl

我编写了以下函数,这是我在其他地方使用的代码,并稍作修改以作为函数工作(在函数参数中使用$ 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中运行良好。

:(

2 个答案:

答案 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;
}