+ -

PHP中curl_exec()函数详解(核心功能、使用步骤、示例代码)

时间:2025-08-06

来源:互联网

在手机上看
手机扫描阅读

在 PHP 开发中,与外部服务器进行通信是常见的需求,例如调用 API 接口、获取远程网页内容、发送 HTTP 请求等。PHP 提供了 cURL 扩展来实现这些功能,而 curl_exec() 函数是其中最核心的执行函数之一。它用于执行一个已配置好的 cURL 会话,并返回服务器的响应结果。本文将详细介绍 curl_exec() 函数的核心功能、使用步骤,并提供多个示例代码,帮助开发者深入理解其工作原理和实际应用。

一、curl_exec() 函数的核心功能

curl_exec() 是 PHP 中 cURL 扩展提供的函数之一,其主要作用是执行一个已经初始化并配置好的 cURL 会话。该函数会根据之前设置的选项(如 URL、请求方法、请求头等)向目标服务器发起请求,并返回服务器的响应内容。

  • 其基本语法如下:

  • boolcurl_exec(resource$ch)

    $ch:一个由 curl_init() 创建并配置的 cURL 句柄;

    返回值:成功时返回服务器的响应内容(字符串),失败时返回 FALSE。

    curl_exec() 是 cURL 流程中的执行阶段,它不会直接控制请求的细节,而是依赖于之前调用的 curl_setopt() 函数设置的选项。

    二、使用 curl_exec() 的基本步骤

    使用 curl_exec() 的完整流程包括以下几个步骤:

  • 初始化 cURL 会话

  • 使用 curl_init() 函数创建一个 cURL 句柄:

    $ch=curl_init();
  • 设置 cURL 选项

  • 使用 curl_setopt() 函数设置请求的参数,例如目标 URL、请求方法、是否返回响应内容等:

    curl_setopt($ch,CURLOPT_URL,"https://example.com");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  • 执行 cURL 请求

  • 使用 curl_exec() 函数发送请求并获取响应:

    $response=curl_exec($ch);
  • 检查执行是否成功

  • 如果返回值为 FALSE,表示请求失败,可以通过 curl_error() 获取错误信息:

    if($response===FALSE){
    echo'cURL错误:'.curl_error($ch);
    }
  • 关闭 cURL 会话

  • 使用 curl_close() 函数关闭 cURL 句柄,释放资源:

    curl_close($ch);

    这一流程构成了 PHP 中使用 cURL 发送请求的标准模式。

    三、curl_setopt() 的常用配置选项

    在调用 curl_exec() 之前,通常需要使用 curl_setopt() 设置多个选项来控制请求行为。以下是一些常见的设置选项:

    CURLOPT_URL:指定请求的目标 URL。

    curl_setopt($ch,CURLOPT_URL,"https://api.example.com/data");

    CURLOPT_RETURNTRANSFER:是否将响应作为字符串返回,而不是直接输出。

    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

    CURLOPT_POST:启用 POST 请求。

    curl_setopt($ch,CURLOPT_POST,true);

    CURLOPT_POSTFIELDS:设置 POST 请求的请求体数据。

    curl_setopt($ch,CURLOPT_POSTFIELDS,"param1=value1&param2=value2");

    CURLOPT_HEADER:是否包含响应头信息。

    curl_setopt($ch,CURLOPT_HEADER,false);

    CURLOPT_HTTPHEADER:自定义请求头信息。

    curl_setopt($ch,CURLOPT_HTTPHEADER,["Content-Type:application/json",
    "Authorization:Beareryour_token"
    ]);

    CURLOPT_FOLLOWLOCATION:是否自动跟随重定向。

    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);

    CURLOPT_TIMEOUT:设置请求的最大执行时间(秒)。

    curl_setopt($ch,CURLOPT_TIMEOUT,10);

    CURLOPT_SSL_VERIFYPEER:是否验证 SSL 证书(用于 HTTPS 请求)。

    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

    CURLOPT_USERAGENT:设置请求的 User-Agent。

    curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0");

    这些选项的设置直接影响 curl_exec() 的执行方式和返回结果,因此在实际使用中非常重要。

    四、curl_exec() 的典型使用示例

    以下是一些常见的使用 curl_exec() 的示例代码,涵盖 GET 请求、POST 请求、JSON 数据提交、文件上传等场景。

  • GET 请求获取网页内容

  • $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"https://example.com");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    $response=curl_exec($ch);
    if($response===FALSE){
    echo"请求失败:".curl_error($ch);
    }
    curl_close($ch);
    echo$response;
  • POST 请求提交表单数据

  • $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"https://api.example.com/login");
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,"username=admin&password=123456");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    $response=curl_exec($ch);
    curl_close($ch);
    echo$response;
  • 发送 JSON 数据的 POST 请求

  • $data=['name'=>'John','age'=>30];
    $json_data=json_encode($data);
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"https://api.example.com/user");
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$json_data);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_HTTPHEADER,["Content-Type:application/json",
    "Content-Length:".strlen($json_data)
    ]);
    $response=curl_exec($ch);
    curl_close($ch);
    echo$response;
  • 上传文件(multipart/form-data 格式)

  • $post_data=['file'=>newCURLFile('path/to/file.jpg')];
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"https://api.example.com/upload");
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    $response=curl_exec($ch);
    curl_close($ch);
    echo$response;
  • 带 Cookie 的请求

  • $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"https://example.com");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_COOKIE,"PHPSESSID=12345");
    $response=curl_exec($ch);
    curl_close($ch);
    echo$response;
  • HTTPS 请求(忽略 SSL 验证)

  • $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"https://secure.example.com");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//忽略SSL证书验证
    $response=curl_exec($ch);
    curl_close($ch);
    echo$response;
  • 获取响应头信息

  • $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,"https://example.com");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch,CURLOPT_HEADER,true);//包含响应头
    $response=curl_exec($ch);
    curl_close($ch);
    echo$response;

    PHP中curl_exec()函数详解(核心功能、使用步骤、示例代码)

    curl_exec() 是 PHP 中用于执行 cURL 请求的核心函数,结合 curl_setopt() 可以实现 GET、POST、文件上传、JSON 通信等多种网络请求。掌握其使用方法和配置选项,是构建 API 调用、数据抓取、远程通信等功能的基础。

    以上就是php小编整理的全部内容,希望对您有所帮助,更多相关资料请查看php教程栏目。

    热门下载

    更多