• Stars
    star
    350
  • Rank 120,499 (Top 3 %)
  • Language
    PHP
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tencent Cloud API 3.0 SDK for PHP

简介

欢迎使用腾讯云开发者工具套件(SDK)3.0,SDK3.0是云 API3.0 平台的配套工具。 为方便 PHP 开发者调试和接入腾讯云产品 API,这里向您介绍适用于 PHP 的腾讯云开发工具包,并提供首次使用开发工具包的简单示例。让您快速获取腾讯云 PHP SDK 并开始调用。

依赖环境

  1. PHP 5.6.0 版本及以上
  2. 从腾讯云控制台 开通相应产品
  3. 获取 SecretID、SecretKey 以及调用地址(endpoint),endpoint 一般形式为*.tencentcloudapi.com,如CVM 的调用地址为 cvm.tencentcloudapi.com,具体参考各产品说明。

获取安装

安装 PHP SDK 前,先获取安全凭证。在第一次使用云API之前,用户首先需要在腾讯云控制台上申请安全凭证,安全凭证包括 SecretID 和 SecretKey, SecretID 是用于标识 API 调用者的身份,SecretKey是用于加密签名字符串和服务器端验证签名字符串的密钥。SecretKey 必须严格保管,避免泄露。

通过 Composer 安装

通过 Composer 获取安装是使用 PHP SDK 的推荐方法,Composer 是 PHP 的依赖管理工具,支持您项目所需的依赖项,并将其安装到项目中。关于 Composer 详细可参考 Composer 官网 。

  1. 安装Composer: windows环境请访问Composer官网下载安装包安装。

    unix环境在命令行中执行以下命令安装。

    curl -sS https://getcomposer.org/installer | php

    sudo mv composer.phar /usr/local/bin/composer

  2. 建议中国大陆地区的用户设置腾讯云镜像源:composer config -g repos.packagist composer https://mirrors.tencent.com/composer/

  3. 执行命令 composer require tencentcloud/tencentcloud-sdk-php 添加依赖。如果只想安装某个产品的,可以使用composer require tencentcloud/产品名,例如composer require tencentcloud/cvm

  4. 在代码中添加以下引用代码。注意:如下仅为示例,composer 会在项目根目录下生成 vendor 目录,/path/to/为项目根目录的实际绝对路径,如果是在当前目录执行,可以省略绝对路径。

    require '/path/to/vendor/autoload.php';

示例

推荐使用 API 3.0 Explorer,提供在线调用、签名验证、SDK 代码生成和快速检索接口等能力,能显著降低使用云 API 3.0 和 SDK 的难度。

还可以参考 SDK 仓库中 examples 目录中的示例,展示了更多的用法。

下面以查询实例接口DescribeInstances为例:

简略版

<?php
require_once '/path/to/vendor/autoload.php';

use TencentCloud\Cvm\V20170312\CvmClient;
use TencentCloud\Cvm\V20170312\Models\DescribeInstancesRequest;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Credential;

try {
    // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中。
    // 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。
    // $cred = new Credential("SecretId", "SecretKey");
    $cred = new Credential(getenv("TENCENTCLOUD_SECRET_ID"),
                           getenv("TENCENTCLOUD_SECRET_KEY"));
    $client = new CvmClient($cred, "ap-guangzhou");
    $req = new DescribeInstancesRequest();
    $resp = $client->DescribeInstances($req);
    print_r($resp->toJsonString());
}
catch(TencentCloudSDKException $e) {
    echo $e;
}

详细版

<?php
require_once '/path/to/vendor/autoload.php';
// 导入对应产品模块的client
use TencentCloud\Cvm\V20170312\CvmClient;
// 导入要请求接口对应的Request类
use TencentCloud\Cvm\V20170312\Models\DescribeInstancesRequest;
use TencentCloud\Cvm\V20170312\Models\Filter;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Credential;
// 导入可选配置类
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;

try {
    // 实例化一个证书对象,入参需要传入腾讯云账户 SecretId,SecretKey
    // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中。
    // 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。
    // $cred = new Credential("SecretId", "SecretKey");
    $cred = new Credential(getenv("TENCENTCLOUD_SECRET_ID"),
                           getenv("TENCENTCLOUD_SECRET_KEY"));

    // 实例化一个http选项,可选的,没有特殊需求可以跳过
    $httpProfile = new HttpProfile();
    // 配置代理
    // $httpProfile->setProxy("https://ip:port");
    $httpProfile->setReqMethod("GET");  // post请求(默认为post请求)
    $httpProfile->setReqTimeout(30);    // 请求超时时间,单位为秒(默认60秒)
    $httpProfile->setEndpoint("cvm.ap-shanghai.tencentcloudapi.com");  // 指定接入地域域名(默认就近接入)

    // 实例化一个client选项,可选的,没有特殊需求可以跳过
    $clientProfile = new ClientProfile();
    $clientProfile->setSignMethod("TC3-HMAC-SHA256");  // 指定签名算法(默认为HmacSHA256)
    $clientProfile->setHttpProfile($httpProfile);

    // 实例化要请求产品(以cvm为例)的client对象,clientProfile是可选的
    $client = new CvmClient($cred, "ap-shanghai", $clientProfile);

    // 实例化一个cvm实例信息查询请求对象,每个接口都会对应一个request对象。
    $req = new DescribeInstancesRequest();

    // 填充请求参数,这里request对象的成员变量即对应接口的入参
    // 你可以通过官网接口文档或跳转到request对象的定义处查看请求参数的定义
    $respFilter = new Filter();  // 创建Filter对象, 以zone的维度来查询cvm实例
    $respFilter->Name = "zone";
    $respFilter->Values = ["ap-shanghai-1", "ap-shanghai-2"];
    $req->Filters = [$respFilter];  // Filters 是成员为Filter对象的列表

    // 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的
    // 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应
    $resp = $client->DescribeInstances($req);

    // 输出json格式的字符串回包
    print_r($resp->toJsonString());

    // 也可以取出单个值。
    // 你可以通过官网接口文档或跳转到response对象的定义处查看返回字段的定义
    print_r($resp->TotalCount);
}
catch(TencentCloudSDKException $e) {
    echo $e;
}

Common Client

从 3.0.839 版本起,支持通用请求方式 Common Client,可以发起 SDK 中未定义的接口请求。

注意:目前仅支持 POST 方法,签名方法仅支持签名方法 v3。

请参考 调用示例

常见问题

代理

如果是有代理的环境下,需要设置系统环境变量 https_proxy ,否则可能无法正常调用,抛出连接超时的异常。

或者使用 GuzzleHttp 代理配置:

$httpProfile = new HttpProfile();
$httpProfile->setProxy('https://ip:port');

$clientProfile = new ClientProfile();
$clientProfile->setHttpProfile($httpProfile);

$client = new OcrClient($cred, 'ap-beijing', $this->clientProfile);

地域容灾

3.0.933起 腾讯云 Php SDK 支持地域容灾,当某个域名请求失败时,会自动切换到容灾域名。使用方式如下: 使用地域时有三种状态相互转换:关闭、全开和半开状态 关闭:使用主要域名请求,如果出现错误时,会切换到全开状态 全开:使用容灾域名请求,当达到一定时间时,会切换到半开状态 半开:此时会放少量的请求到主要域名,如果请求失败,则切换到全开状态,当请求成功数达到一定的数量时,会切换到关闭状态

相关设置如下

use TencentCloud\Common\Profile\RegionBreakerProfile;
// 开启地域容灾
$clientProfile->enableRegionBreaker=true;  
// 设置主备节点,以cvm产品为例,假设主节点在上海,备节点在北京,则配置如下
$regionBreakerProfile = new RegionBreakerProfile(
    "cvm.ap-shanghai.tencentcloudapi.com",	// 主节点
    "cvm.ap-beijing.tencentcloudapi.com"    // 备节点	
);
$clientProfile->setRegionBreakerProfile($regionBreakerProfile);		

证书问题

如果你的 PHP 环境证书有问题,可能会遇到报错,类似于 cURL error 60: See http://curl.haxx.se/libcurl/c/libcurl-errors.html,请尝试按如下步骤解决:

  1. https://curl.haxx.se/ca/cacert.pem 下载证书文件 cacert.pem,将其保存到 PHP 安装路径下。
  2. 编辑 php.ini 文件,删除 curl.cainfo 配置项前的分号注释符(;),值设置为保存的证书文件 cacert.pem 的绝对路径。
  3. 重启依赖 PHP 的服务。

php_curl 扩展

此 SDK 依赖的 GuzzleHttp 需要开启 php_curl 扩展,查看环境上的 php.ini 环境确认是否已启用,例如在 Linux 环境下,PHP 7.1 版本,托管在 apache 下的服务,可以打开 /etc/php/7.1/apache2/php.ini 中查看 extension=php_curl.dll 配置项是否已被注释,请删除此项配置前的注释符并重启 apache。

Web 访问异常

命令行下执行正常,但是放在 Web 服务器执行则报错:

cURL error 0: The cURL request was retried 3 times and did not succeed. The most likely reason for the failure is that cURL was unable to rewind the body of the request and subsequent retries resulted in the same error. Turn on the debug option to see what went wrong. See https://bugs.php.net/bug.php?id=47204 for more information. (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

此问题出现情况不一。可以运行 php -r "echo sys_get_temp_dir();" 打印系统默认临时目录绝对路径,然后在 php.ini 配置 sys_temp_dir 为这个值尝试是否能解决。

源码安装问题

为了支持部分源码安装的需要,我们将依赖的包文件放在 vendor 目录中,又考虑到不能造成对 composer 的不兼容,github 不得不设置禁止导出 vendor 目录,造成必须使用 git clone 命令才能拿到 vendor 目录的情况,对一些不熟悉 github 的用户造成了困扰。从 3.0.188 版本开始,我们暂时移除了源码安装,必须使用 composer 安装 SDK 和依赖的包。

关键字冲突问题

目前已知在 PHP 7.x 版本中,由于关键字冲突,弹性伸缩产品对应的 As 模块可能无法使用。可以考虑升级到 SDK 3.0.362 版本,使用 Autoscaling 模块。或者升级到 PHP 8 版本。

旧版SDK

新版SDK兼容旧版SDK。旧版本的SDK存放于QcloudApi目录,但不再维护更新,推荐使用新版SDK。

More Repositories

1

TIMSDK

Tencent Cloud Chat features a comprehensive suite of solutions including global access, one-to-one chat, group chat, message push, profile and relationship chain hosting, and account authentication.
Java
2,562
star
2

tencentcloud-sdk-go

Tencent Cloud API 3.0 SDK for Golang
Go
631
star
3

tencentcloud-sdk-python

Tencent Cloud API 3.0 SDK for Python
Python
534
star
4

tencentcloud-sdk-java

Tencent Cloud API 3.0 SDK for Java
Java
516
star
5

O266player

C
378
star
6

tencentcloud-sdk-nodejs

Tencent Cloud API 3.0 SDK for NodeJS
TypeScript
364
star
7

tencentcloud-sdk-dotnet

Tencent Cloud API 3.0 SDK for .NET
C#
348
star
8

serverless

TencentCloud Serverless
Python
230
star
9

httpdns-sdk-android

Tencent Cloud HTTPDNS SDK
Kotlin
170
star
10

tencentcloud-monitor-grafana-app

Tencent Cloud Monitor App Plugin for Grafana
TypeScript
151
star
11

httpdns-sdk-ios

智营防劫持SDK
Objective-C
150
star
12

tencentcloud-iot-sdk-embedded-c

SDK for connecting to Tencent Cloud IoT from a device using embedded C.
C
148
star
13

chat-uikit-flutter

A powerful Flutter chat UI component library and business logic for Tencent Cloud Chat, creating seamless in-app chat modules for delightful user experiences.
Dart
138
star
14

chat-uikit-vue

Build In-App Chat & Audio/Video Call & Live Streaming in minutes with UIKit components for Vue
Vue
128
star
15

chat-uikit-uniapp

腾讯云 IM 的 uniapp UI 组件库,支持 vue2/vue3,在几分钟内即可构建应用内聊天、音视频通话和直播功能。
Vue
114
star
16

tencentcloud-iot-explorer-sdk-embedded-c

SDK for embedded system connect and comunicate with Tencent Cloud IoT Explorer Platform
C
111
star
17

cosbrowser

腾讯云 COS 客户端
89
star
18

chat-demo-flutter

The sample app showcasing Tencent Cloud Chat integration with Flutter across iOS, Android, Web, macOS, and Windows platforms.
C
89
star
19

tc-iot-sdk-embedded-for-esp8266

C
81
star
20

tencentcloud-cloud-controller-manager

tencentcloud cloud controller manager for kubernetes
Go
81
star
21

scf-node-debug

JavaScript
76
star
22

chat-uikit-react

Build In-App Chat & Audio/Video Call & Live Streaming in minutes with UIKit components for React
TypeScript
69
star
23

libtquic-sdk

腾讯TQUIC-跨平台通用QUIC网络库
Objective-C
68
star
24

trtc-education-electron

教育场景化解决方案App,包含基础的实时音视频通信和即时通信功能,支持丰富的课堂互动(举手、点名/签到等)和教育白板。 技术栈:Electron、React、Material-ui react、Webpack、sass等。
TypeScript
66
star
25

chat-uikit-wechat

腾讯云即时通信 IM,基于微信小程序原生的开源 UI 组件
JavaScript
65
star
26

tencentcloud-cli

Tencent Cloud API 3.0 Command Line Interface
Python
62
star
27

TPNS-Flutter-Plugin

Dart
60
star
28

kubernetes-csi-tencentcloud

kubernetes csi volume plugin for tencentcloud
Go
56
star
29

tencentcloud-sdk-cpp

Tencent Cloud API 3.0 SDK for C++
C++
53
star
30

tencentcloud-speech-sdk-js

JavaScript
52
star
31

chat-uikit-android

Tencent Cloud Chat UI Components For Android
Java
28
star
32

tc-ocr-sdk

通用文字识别客户端SDK
JavaScript
28
star
33

tencentcloud-sdk-ruby

Tencent Cloud API 3.0 SDK for Ruby
Ruby
27
star
34

cos-action

Github Action to upload to Tencent Cloud COS
JavaScript
26
star
35

wemeet-restapi-sdk-java

腾讯会议开放平台java sdk
Java
25
star
36

chat-uikit-ios

Tencent Cloud Chat UI Components For iOS
Objective-C
24
star
37

tencentcloud-speech-sdk-python

Python
23
star
38

tencentcloud-sdk-android-soe

soe android sdk
Java
17
star
39

chat-sdk-flutter

腾讯云即时通信IM Flutter 无UI SDK
Dart
16
star
40

cluster-api-provider-tencent

Go
16
star
41

tencentcloud-im-sdk-java

腾讯云 即时通信IM RESTAPI SDK Java 版本
Java
16
star
42

tencentcloud-cls-sdk-go

cls log go sdk
Go
15
star
43

tencentcloud-speech-sdk-go

Go
14
star
44

tencentcloud-iot-explorer-ble-sdk-embedded

C
14
star
45

tcb-sdk-php

tencent cloud base sdk for php
PHP
13
star
46

tencentcloud-sdk-ios-soe

soe iOS sdk
C
13
star
47

signature-process-demo

Demonstrate Cloud API Signature Process.
C#
12
star
48

tencentcloud-im-sdk-php

腾讯云 即时通信IM RESTAPI SDK PHP 版本
PHP
12
star
49

container-demo

Tencent Cloud Container Products (TKE, EKS, Edge, TCM, TCR etc) Examples
Java
11
star
50

tencentcloud-demo-mp-soe

soe wechat miniprogram demo
JavaScript
10
star
51

joox-sdk-android

JOOX SDK/demo 仓库
Kotlin
10
star
52

chat-demo-electron

腾讯云即时通信IM Electron Demo
TypeScript
10
star
53

chat-demo-react-native

Tencent Cloud IM(Chat) React Native Demo
TypeScript
9
star
54

virtualman-render-demo

云小微数智人移动端渲染demo,包括云渲染以及端渲染示例代码
JavaScript
9
star
55

chat-demo-flutter-hybrid

Tencent Cloud Chat: Samples of integratation Flutter SDK to an existing app.
Dart
9
star
56

ERDN

基于同感受野可变形卷积网络的视频去模糊
Python
9
star
57

cls-iframe-demo

CLS iframe demo. https://cloud.tencent.com/document/product/614/45742
JavaScript
9
star
58

tencentcloud-cls-sdk-android

腾讯云CLS Android SDK
Java
8
star
59

tencentcloud-sdk-java-intl-en

Tencent Cloud API 3.0 SDK for Java
Java
8
star
60

hostpathperpod

A simple flex volume plugin like hostPath, but create a host directory with pod meta.
Go
8
star
61

tencentcloud-serverless-nodejs

腾讯云云函数SDK,集成云函数业务流接口
JavaScript
8
star
62

cls-console-sdk

You can embed Tencent Cloud CLS into other systems to access logs without login, which can help you use CLS (including search and analysis, dashboard, and other features) more efficiently. 将腾讯云日志服务以内嵌方式集成到其他系统中,免登录实现一站式日志访问,方便快捷使用CLS日志服务(包含检索分析,仪表盘)
TypeScript
8
star
63

Serverless-demos

7
star
64

cos-sdk-flutter-plugin

对象存储COS Flutter语言SDK(桥接plugin实现)
Dart
7
star
65

tencentcloud-cls-sdk-java

cls日志sdk
Java
6
star
66

tencentcloud-speech-sdk-cpp

C++
6
star
67

tencentcloud-sdk-python-intl-en

Tencent Cloud API 3.0 SDK for Python
Python
6
star
68

tcb-sdk-dotnet

云开发 .NET SDK
C#
6
star
69

tencentcloud-cls-sdk-cpp

腾讯云CLS CPP SDK
C++
6
star
70

tencentcloud-cls-sdk-js

cls log js sdk
TypeScript
6
star
71

tencentcloud-cls-sdk-ios

腾讯云 CLS IOS SDK
C
6
star
72

tencentcloud-iot-explorer-ble-sdk-embedded-demo

C
6
star
73

wemeet-restapi-sdk-php

腾讯会议开放平台php sdk
PHP
5
star
74

tencentcloud-opentelemetry-java

腾讯云APM团队基于opentelemetry-java-instrumentation开源项目进行二次开发
5
star
75

Serverless-examples

云函数(Serverless Cloud Function,SCF)示例代码库
Python
5
star
76

cls-grafana-datasource

TencentCloud Log Service datasource plugin for Grafana
TypeScript
5
star
77

tdmq-go-client

Go
5
star
78

tencentcloud-cls-sdk-python

腾讯云日志服务python sdk
Python
5
star
79

chat-plugin-ue5

Tencent Cloud Chat for IM Unreal Engine 5
C++
5
star
80

tdmq-java-client

Java
5
star
81

cos-sdk-react-native-plugin

对象存储COS React Native语言SDK(桥接plugin实现)
TypeScript
5
star
82

tione-tilearn-angel

腾讯云TI平台tilearn-angel训练推理加速最佳实践案例集
Shell
5
star
83

tencentcloud-cls-logback-appender

tencentcloud cls logback appender
Java
4
star
84

ckafka-sdk-demo

腾讯云CKafka各语言demo
C
4
star
85

tencentcloud-sdk-go-intl-en

Tencent Cloud API 3.0 SDK for Golang
Go
4
star
86

tencent-chat-i18n-tool

An easy-to-use and versatile Flutter internationalization tool tailored for application using Tencent Cloud Chat, streamlining multi-language support for developers.
Dart
4
star
87

tencentcloud-speech-sdk-java

Java
4
star
88

smh-sdk-android

腾讯云智能媒资托管服务(https://cloud.tencent.com/product/smh) Android SDK,实现手机端媒体文件的上传、下载与云端管理功能。
Kotlin
4
star
89

rocketmq-demo

腾讯云 RocketMQ 当前有较多的用户尝试接入,但是很多用户在第一次接入的时候会有较多的问题,该仓库的目的在于给用户提供多种语言 SDK 接入的代码 Demo。根据不同的功能以及使用场景,提供规范的接入 Demo 代码,用户开箱即用,降低用户接入的成本而且可以避免用户由于错误使用导致的故障等问题。
Java
4
star
90

tavmedia-sdk-ios

全平台视频剪辑方案
Objective-C
3
star
91

tencentcloud-speech-sdk-java-example

Java
3
star
92

huiyan-faceid-demo

慧眼产品的对外使用示例代码的Example
Java
3
star
93

tencentcloud-sdk-dotnet-intl-en

Tencent Cloud API 3.0 SDK for .NET
C#
3
star
94

tcb-manager-sdk-php

PHP
3
star
95

TPNS-iOS-CocoaPods

腾讯移动推送iOS SDK pod仓库
Objective-C
3
star
96

qapm-sdk-ios

主要用来更新qapm性能监控组件
Objective-C
3
star
97

tke-cluster-credential-action

Retrieve TKE cluster credential and set it to $HOME/.kube/config.
JavaScript
3
star
98

tencentcloud-cls-sdk-php

腾讯云CLS PHP SDK
PHP
3
star
99

apigateway-demo

Python
3
star
100

tencentcloud-speech-sdk-dotnet

语音识别SDK
C#
3
star