专栏首页CVM技术交流以1个具体接口为例来展示Windows下腾讯云PHP SDK的使用
原创

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

以下文档以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 Manager

五、打开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放到正确位置

examples\cdn\v20200225 (这里我是以日期区分的),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:\PHPSDK\examples\cdn\v20200225"

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

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

[TencentCloud\Common\Exception\TencentCloudSDKException] 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 ,FastCGI直接意外退出了。

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

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

在Web服务器里调试代码,PHP环境要再开一个配置,否则会有如上图的报错

[TencentCloud\Common\Exception\TencentCloudSDKException] code: message: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();" 打印系统默认temp目录绝对路径,Windows一般是C:\Windows\temp,Linux一般是/tmp,然后在php.ini开启如下配置即可 sys_temp_dir = "系统默认temp目录绝对路径" 。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • win10 、server 2019、office 2019激活

    https://www.echoteen.com/office2019-server-windows-kms.html

    shawyang
  • fonts文件夹挖矿病毒识别办法

    Windows中病毒木马的时候,fonts目录是病毒木马最喜欢的藏匿点之一,但是你打开fonts文件后找不到病毒,这是因为fonts视图不是普通文件夹视图

    shawyang
  • IIS启动不了,80端口被占用,如何快速定位被谁占用

    先netstat -ano|findstr 80定位占用80端口的进程pid为1036

    shawyang
  • Nginx工作原理和优化、漏洞。

    http://blog.csdn.net/hguisu/article/details/8930668 (排名100多bolg写的很好)

    bear_fish
  • PHP线程安全与非线程安全的区别(NTS/TS)选择?

    很多时候,我们在做PHP环境配置的时候,很多人都是直接去乱下载PHP版本的,但是他不清楚:从2000年10月20日发布的第一个Windows版的PHP3.0.1...

    周俊辉
  • 入门 | 完全云端运行:使用谷歌CoLaboratory训练神经网络

    机器之心
  • php5与php7的区别点总结

    php5与php7的区别是什么?下面本篇文章就来给大家对比一下php5与php7,介绍php5与php7之间的区别。有一定的参考价值,有需要的朋友可以参考一下,...

    砸漏
  • 详述 MySQL 数据库的安装及配置

    温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。 博主说:最近在写「史上最简...

    CG国斌
  • Apache中.htaccess文件利用的总结与新思路拓展

    第一种是最通用最常见的Module方式,即在httpd.conf中使用LoadModule的方式,将php的dll或者so文件加载到apache当中。

    FB客服
  • Http Server API路由请求到web程序

    接上文,容器内web程序一般会绑定到http://0.0.0.0:{某监听端口}或http://+:{某监听端口},以确保使用容器IP可以访问到web应用。

    小码甲

扫码关注云+社区

领取腾讯云代金券