以1个具体接口为例来展示Windows下腾讯云PHP SDK的使用

  • 2020 年 2 月 26 日
  • 筆記

以下文档以1个具体接口为例来展示Windows下腾讯云PHP SDK的使用

先看目录再看细节

一、目标:PHP SDK调用CDN日志下载链接查询接口DescribeCdnDomainLogs

二、前期试验获取代码:用api explorer轻松实现,证明后端正常

三、资料准备:

  • 1、下载PHP安装包
  • 2、用git clone url的方式下载PHP SDK
  • 3、把最初在api explorer里复制下来的DescribeCdnDomainLogs.php放到正确位置

四、环境准备:

  • 1、安装IIS
  • 2、安装PHP Manage

五、打开IIS配置PHP环境并调试

  • 1、指定网站根目录到之前准备的源码目录
  • 2、如下图找到PHP Manager双击配置PHP环境

3、回到IIS调试使浏览器能正常访问

六、特别说明

一、目标:PHP SDK调用CDN日志下载链接查询接口DescribeCdnDomainLogs

二、前期试验获取代码:用api explorer轻松实现,证明后端正常

https://console.cloud.tencent.com/api/explorer?Product=cdn&Version=2018-06-06&Action=DescribeCdnDomainLogs

把api explorer里PHP代码拷贝下来留作后用。把代码保存DescribeCdnDomainLogs.php。

三、资料准备:

官网文档链接:https://cloud.tencent.com/document/product/228/39232

PHP SDK使用说明:https://cloud.tencent.com/document/sdk/PHP ,其中说明了PHP 5.6.33 版本及以上

1、下载PHP安装包

Windows PHP 全版本下载地址 https://windows.php.net/downloads/releases/archives/

下载nts版本,为什么下载nts请参考 https://www.jianshu.com/p/b0da6c99dd4c

我们下载一个PHP5.6里面的最高版本5.6.40,下一个PHP7里面的最高版本7.4.2,分别解压以备后用

这里要重点注意:php.exe的执行依赖VC库,配置PHP环境之前先安装好VC库,我用的 http://www.downxia.com/downinfo/162121.html

2、用git clone url的方式下载PHP SDK

URL:https://github.com/TencentCloud/tencentcloud-sdk-php

由于github.com没有中国节点,国内clone有点慢,请耐心等待

Git安装文件下载地址:https://git-scm.com/download/win

https://github.com/git-for-windows/git/releases/download/v2.25.1.windows.1/Git-2.25.1-64-bit.exe

安装过程这里不赘述,可以百度下。

在Windows下有Git GUI和Git Bash两种方式均可,我用的bash。

git clone https://github.com/TencentCloud/tencentcloud-sdk-php .PHPSDK

等了半个多小时clone完成了,完成后在Administrator的家目录里找到PHPSDK目录有36.2 MB

复制PHPSDK目录到C盘根目录作为网站源码以备后用

3、把最初在api explorer里复制下来的DescribeCdnDomainLogs.php放到正确位置

examplescdnv20200225 (这里我是以日期区分的),examples目录原本没有cdn的例子,目录是我自己建的

注意:这里如果放的位置不对,那你得调整DescribeCdnDomainLogs.php代码里的相对路径

四、环境准备:

我是1核1G内存的Windows2008R2服务器。我们采用IIS+PHPManager来配置IIS+PHP环境。为什么用PHPManager,因为PHP版本太多了,而PHPManager换PHP版本只需点一个按钮,且是微软官网推荐的IIS PHP环境配置软件。不用phpstudy是因为phpstudy安全漏洞太多。

https://www.iis.net/downloads/community/2010/09/php-manager-for-iis-7

1、安装IIS

参考https://cloud.tencent.com/developer/article/1557571

2、安装PHP Manager

官网:https://archive.codeplex.com/?p=phpmanager

下载后解压查看releases目录里的releaseList.json说明了版本历史,我们用版本6,进到目录6,把较大的文件重命名为PHPManagerForIIS-1.2.0-x64.msi就可以双击安装了(较小的自然是PHPManagerForIIS-1.2.0-x86.msi)

五、打开IIS配置PHP环境并调试

首先运行inetmgr打开IIS

1、指定网站根目录到之前准备的源码目录

2、如下图找到PHP Manager双击配置PHP环境

如上图,我们只需找到php.exe所在目录选定php.exe即可完成配置,其他的phpinfo()、php_curl、php_openssl都属于检查动作了。此时在cmd命令行就可以调试了:

执行命令cd /d "DescribeCdnDomainLogs.php所在目录的绝对路径",比如我的是cd /d "C:PHPSDKexamplescdnv20200225"

注意上面是英文双引号、环境变量可配可不配

其实一开始我在cmd命令行执行时没一次性成功,而是报错如下:

[TencentCloudCommonExceptionTencentCloudSDKException] code: message:cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

翻译下unable to get local issuer certificate 是无法获取本地颁发者证书

百度搜了下unable to get local issuer certificate 找到解决方案

参考https://www.jianshu.com/p/f9c575c7f36e

这里不需要重启服务器,重启Web服务、重新开一个cmd命令行窗口即可。

打开你php.exe所在目录的php.ini,找到curl.cainfo,默认没配置,需要你下载

https://curl.haxx.se/ca/cacert.pem 并在curl.cainfo里指定绝对路径,我放到了ext目录,ext目录都是php_curl、php_openssl等扩展文件。

添加上curl.cainfo后一次性成功了。

3、回到IIS调试使浏览器能正常访问

PHP5.6.40有bug,FastCGI直接意外退出了。

换用了PHP7.4.2版本,访问时没有意外退出,但报500内部错误。

经研究,需要把PHP Settings那里的错误配置选成生产环境,设定成Production machine后再通过IE测试就正常了。

六、特别说明

腾讯云PHP SDK文档里写的PHP 5.6.33 版本及以上,PHP5.6.40在其列,在IIS7.5(2008R2的IIS是7.5版本)报错是IIS7.5和PHP5.6.40兼容有问题,但是cmd命令行下,php5.6.40是正常的,如下图。