以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輕鬆實現,證明後端正常


把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是正常的,如下圖。
