这篇文档经过大量实践验证,验证了php6/7/8
1、安装VC库
php.exe的执行依赖VC库,配置PHP环境之前先安装好VC库,我用的
http://www.downxia.com/downinfo/162121.html
2、下载nts php包并解压(我先下载的PHP5.6.40,调用接口的结果里如果有中文,在命令行下中文显示乱码,换PHP7.4.2后结果里的中文正常显示)
https://windows.php.net/downloads/releases/archives/
为什么下载nts请参考 https://www.jianshu.com/p/b0da6c99dd4c
3、下载cacert.pem
https://curl.haxx.se/ca/cacert.pem
放到PHP解压的包根目录里,然后编辑 php.ini 文件(没有php.ini的话,copy一份php.ini-production重命名为php.ini),删除 curl.cainfo 配置项前的分号注释符(;),值设置为保存的证书文件 cacert.pem 的绝对路径。
4、下载composer(上一步如果没执行后,这一步可能会报错)
https://getcomposer.org/Composer-Setup.exe
找到php.exe路径安装即可
5、下载composer.phar
https://getcomposer.org/composer.phar 放到php.exe所在目录,并在php.exe所在目录新建一个composer.phar.bat的文件,内容为"%~dp0php.exe" "%~dp0composer.phar" %*
请注意:
①composer.phar.bat跟phar.phar.bat的文件类型相同、文件内容相似,可以直接复制一份phar.phar.bat再重命名为composer.phar.bat再改内容。
②没有php.ini的话,copy一份php.ini-production重命名为php.ini
php.ini里php_curl、php_openssl默认是开启的,不要注释掉。
[PHP_CURL]
extension=php_curl.dll
[PHP_OPENSSL]
extension=php_openssl.dll
6、配置环境变量并验证php -v和composer --version
运行
输入php -v查看php版本,输入composer --version查看composer版本。
6、改源到国内(3选1)
composer config -g repo.packagist composer https://pkg.phpcomposer.com/
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/
composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/
在https://packagist.org/查找你要下载的依赖包的项目名称
比如我要下载TencentCloud/tencentcloud-sdk-php的依赖包
只找到1个TencentCloud/tencentcloud-sdk-php
点开链接https://packagist.org/packages/tencentcloud/tencentcloud-sdk-php看到最新版本是3.0.126(随着时间变化,版本会有变化,以你看到最新版为准)
也可以用命令查找,例如composer search --only-name tencentcloud-sdk-php
查询后get到包名全称tencentcloud/tencentcloud-sdk-php
然后输入“composer home 包名全称” 打开包主页(Opens the package's repository URL or homepage in your browser. https://github.com/TencentCloud/tencentcloud-sdk-php)
composer home tencentcloud/tencentcloud-sdk-php
或者输入“composer browse 包名全称”也可以
composer browse tencentcloud/tencentcloud-sdk-php
7、两种方式安装PHP SDK
①下载github .zip压缩包,在解压后的目录执行composer install安装项目依赖,执行composer install之前需要先切到解压后的目录
执行第一遍结束后再执行一遍会提示Noting to install or update
发现多了个composer.lock和vendor
②通过composer require包全称 包版本号来安装SDK,执行之前先切入项目路径(空目录)
例如
mkdir "C:tencentcloud-sdk-php-require"
cd /d "C:tencentcloud-sdk-php-require"
composer require tencentcloud/tencentcloud-sdk-php 3.0.126
第一遍结束后再执行一遍会提示Noting to install or update
8、composer require 方式获得的源码相对位置跟github方式(composer install)获取的源码相对位置有区别,在代码引用上也有区别
①git clone方式获取的开头第一句话是require_once __DIR__.'/../../../vendor/autoload.php';或
require '../../../vendor/autoload.php';
②composer require方式获取的开头第一句话应该是require_once __DIR__.'/../../../../../../vendor/autoload.php';或
require '../../../../../../vendor/autoload.php';
随着sdk版本的变化,可能require 这句有变化,但不论怎么变,目录层级要弄对,确保要能找到require 后面指定的文件
9、如果是在Web服务器里调试代码,PHP环境要再开一个配置,否则会有如下报错
[TencentCloudCommonExceptionTencentCloudSDKException] 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:Windowstemp,Linux一般是/tmp,然后在php.ini开启如下配置即可 sys_temp_dir = "系统默认temp目录绝对路径" 。