curl_exec()始终返回false

Adi*_*hya 101 php curl

我写了这段简单的代码:

$ch = curl_init();

//Set options
curl_setopt($ch, CURLOPT_URL, "http://www.php.net");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$website_content = curl_exec ($ch);
Run Code Online (Sandbox Code Playgroud)

在我的情况$website_content下来了false.任何人都可以建议/建议可能出错的事情吗?

Lin*_*een 224

错误检查和处理是程序员的朋友.检查初始化和执行cURL函数的返回值.如果失败curl_error(),curl_errno()将包含更多信息:

try {
    $ch = curl_init();

    // Check if initialization had gone wrong*    
    if ($ch === false) {
        throw new Exception('failed to initialize');
    }

    curl_setopt($ch, CURLOPT_URL, 'http://example.com/');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt(/* ... */);

    $content = curl_exec($ch);

    // Check the return value of curl_exec(), too
    if ($content === false) {
        throw new Exception(curl_error($ch), curl_errno($ch));
    }

    /* Process $content here */

    // Close curl handle
    curl_close($ch);
} catch(Exception $e) {

    trigger_error(sprintf(
        'Curl failed with error #%d: %s',
        $e->getCode(), $e->getMessage()),
        E_USER_ERROR);

}
Run Code Online (Sandbox Code Playgroud)

*curl_init() 手动状态:

成功时返回cURL句柄,错误时返回FALSE.

我已经观察到FALSE当您使用其$url参数时返回的函数,并且无法解析域.如果参数未使用,则该函数可能永远不会返回FALSE.但是,总是要检查它,因为手册没有明确说明实际上有什么"错误".

  • +1:在`curl_exec` FALSE返回时简单而直接地解决PHP中的卷曲问题. - [PHP示例中的Curl Verbose模式](http://stackoverflow.com/a/9571305/367456) (9认同)
  • 没问题.有一个复兴徽章:-)感谢接受. (7认同)

Dan*_*laG 21

在我来说,我需要设置VERIFYHOSTVERIFYPEERfalse,是这样的:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
Run Code Online (Sandbox Code Playgroud)

在调用之前curl_exec($ch)

因为我在两个具有自分配证书的开发环境之间工作。使用有效的证书,无需设置VERIFYHOSTVERIFYPEERfalse因为该curl_exec($ch)方法将起作用并返回您期望的响应。

  • 你是救世主 (2认同)