本文檔旨在為開發人員解答在使用PHP SDK過程中所遇到的常見問題,以提升開發效率。
環境檢查
確保PHP語言環境已經正確安裝,PHP版本 >= 5.6。
必須在系統上全域安裝 Composer。
執行 composer 安裝 SDK 的 PHP 版本要小於或等於實際運行時的 PHP 版本。 例如,在 PHP7.2 環境下安裝 SDK 後產生 vendor 目錄,只能在 PHP7.2 以上版本使用,如果拷貝到 PHP5.6 環境下使用,會出現依賴版本不相容問題。
問題列表
問題3:運行時,提示“PHP Fatal error: Class 'Darabonba\OpenApi\Models\Config' not found”。
問題5:運行時,提示“Could not fetch [repository], please review your configured GitHub OAuth token”。
問題11:運行composer require alibabacloud/dysmsapi-20170525時報錯:“cURL error 61”。
問題15:Undefined property: Darabonba\OpenApi\Models\Config::$tlsMinVersion
問題1:AK傳參問題。
問題現象:代碼運行時報錯,報錯資訊中包含如下資訊時,表示AK未正確地設定阿里雲的憑證(AccessKey)。
V2.0 SDK:AlibabaCloud\Tea\Exception\TeaUnableRetryError: code: 400, AccessKeyId is mandatory for this action.
V1.0 SDK:Fatal error: Uncaught AlibabaCloud\Client\Exception\ClientException: AccessKey ID cannot be empty in XXX.
解決方案:
執行以下命令,檢查您的環境變數中是否配置有ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET:
Linux/macOS
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRETWindows
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%若返回正確的AccessKey,則說明配置成功。如果返回為空白或錯誤,請嘗試重新設定,具體操作請參見在Linux、macOS和Windows系統配置環境變數。
檢查代碼中AK相關內容是否存在錯誤。
常見的錯誤樣本:
$config = new Config([ "accessKeyId" => getenv("yourAccessKeyID"), "accessKeySecret" => getenv("yourAccessKeySecret") ]);正確樣本:
$config = new Config([ "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") ]);說明getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
和getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),表示是從環境變數中擷取ALIBABA_CLOUD_ACCESS_KEY_ID及ALIBABA_CLOUD_ACCESS_KEY_SECRET的值。
重要切勿直接線上上代碼中明文寫入 AccessKey,該寫法存在安全隱患。
問題2:在調用OpenAPI時提示“cURL error 60: SSL certificate problem: unable to get local issuer certificate”或“curl error 28 while downloading https://repo.packagist.org/packages.json: SSL connection timeout”。
導致此問題的原因:
網路連接問題: 本網不穩定或防火牆阻止了 SSL 串連。
代理配置問題: 未正確配置代理導致無法訪問外部資源。
SSL 憑證問題: 本地系統不信任某些 SSL 憑證,導致連線逾時。
解決方案:
檢查網路連接,確保您能夠訪問互連網,並且網路連接穩定。
配置 Composer 使用代理:
composer config -g -- unset http-proxy composer config -g -- unset https-proxy composer config -g http-proxy http://your-proxy:port composer config -g https-proxy https://your-proxy:port下載受信任CA認證:
您需要下載一個受信任的CA認證,例如Mozilla的CA認證庫。
配置PHP的SSL憑證路徑。在php.ini檔案中搜尋curl.cainfo,將值設定為CA認證的絕對路徑,然後去掉前面配置項前的;注釋符。
重啟PHP服務。
信任自我簽署憑證(可選),如果串連問題是由自我簽署憑證引起,允許 Composer 忽略 SSL 驗證(不推薦用於生產環境):
composer config --global -- disable-ssl重要此操作將暫時禁用 SSL 驗證,但請務必在後續操作中執行命令
composer config --global -- enable-ssl以重新啟用,以確保系統的安全性。
問題3:運行時,提示“PHP Fatal error: Class 'Darabonba\OpenApi\Models\Config' not found”。
此問題的直接原因是未啟用 Composer 自動載入功能。解決方案:
Composer在下載依賴時,會產生vendor目錄,該目錄下包含autoload.php檔案。在應用代碼上加入require_once語句。
require_once(<vendor目錄下autoload.php檔案>)問題4:運行時,提示“PHP Fatal error: Uncaught exception 'GuzzleHttp\Exception\RequestException' with message 'cURL error 3”
此問題的直接原因是RegionId或Endpoint的填寫不正確。解決方案:
確保您所選地區支援您正在調用的服務。產品的Endpoint可以通過OpenAPI 開發人員門戶的產品首頁中進行尋找,這裡以簡訊服務為例。
問題5:運行時,提示“Could not fetch [repository], please review your configured GitHub OAuth token”。
此問題的直接原因是提供給Composer的GitHub憑證存在錯誤或已到期。解決方案:
阿里雲SDK包是不需要配置GitHub憑證的。
若通過非官方網站路徑安裝Composer,並且不需要GitHub憑證以訪問私人庫,則只需刪除composer目錄下的auth.json檔案即可。
若需通過GitHub憑證訪問私人庫,請按照Composer的提示進行Token重新整理。
問題6:調用API逾時,提示“cURL error 28: Resolving timed out after 5000 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://dysmsapi.aliyuncs.com”。
逾時問題可能由多種因素引起,以下是一些常見的原因及相應的解決步驟:
網路連接問題
情況描述:用戶端與伺服器之間的網路不通或網路不穩定導致請求無法到達目標伺服器。
解決方案:
使用ping或curl命令測試本地主機與雲產品Endpoint之間連通性,例如調用傳送簡訊介面逾時時,使用ping dysmsapi.aliyuncs.com或curl -v https://dysmsapi.aliyuncs.com測試連通性。
若命令執行逾時或者無響應,請檢查本地防火牆或路由器中是否有阻斷策略。
若命令有響應,建議設定合理的逾時時間,避免因配置不當導致請求失敗,具體操作請參見逾時配置。範例程式碼如下:
// 運行時參數逾時設定,僅對使用了該運行時參數執行個體的請求有效
$runtimeOptions = new RuntimeOptions();
$runtimeOptions->connectTimeout = $connectionTimeoutMillis;API處理時間過長
情況描述:目標API處理請求的時間超過了設定的讀逾時時間。
解決方案:通過配置讀逾時時間來適應較長的API回應時間, 具體操作請參見逾時配置。例如通過配置讀逾時時間參數來延長當前請求的讀逾時時間,範例程式碼如下:
// 運行時參數逾時設定,僅對使用了該運行時參數執行個體的請求有效
$runtimeOptions = new RuntimeOptions();
$runtimeOptions->readTimeout = $readTimeoutMillis;問題7:運行時,提示“alibabacloud/tea[3.0.0,3.2.01 require ext-curl*-> it is missing from your system. Install or enable PHP's curl extension,100e ...”錯誤
此問題的原因是未安裝PHP的curl外掛程式。解決方案:
Ubuntu/Debian系統:
sudo apt-get install php-curlCentOS/Fedora/RHEL系統:
sudo yum install php-curl問題9:在執行composer require命令時,出現了錯誤提示“[Composer\Downloader\TransportException],無法下載檔案,發生HTTP/1.1 404 Not Found”或“your requirements could not be resolved to an installable set of packages”。

可能導致原因:
使用的鏡像源(如阿里雲鏡像)可能沒有及時同步最新的包資訊,導致某些檔案不存在。
鏡像源的URL可能已變更,或者路徑錯誤。
解決方案:
檢查並確保使用正確的鏡像源。
使用以下命令查看當前Composer配置的鏡像源:
composer config -g --list阿里雲
Composer全量鏡像:https://mirrors.aliyun.com/composer/composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/清華
Composer全量鏡像:https://mirrors.tuna.tsinghua.edu.cn/composer/composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/
暫時禁用鏡像源,直接使用官方中心倉庫。修改或刪除
composer.json中的repositories配置,或使用命令composer config --unset repos.url。# 使用Composer的官方倉庫。 composer config -g repo.packagist composer https://packagist.org檢查網路連接。網路不穩定可能導致無法正確下載檔案。嘗試更換網路環境或使用VPN。
執行命令時,若提示Composer版本過舊:
Warning: This development build of composer is over 60 days old. It is recommended to update it by running "/usr/bin/composer self-update" to get the latest version.建議更新到最新版本並運行(可選)。# 更新Composer到最新版本。 composer self-update # 使用composer.phar來運行最新版本。 composer self-update --1執行命令時,若出現
Composer警告提示,表明對Composer 1的支援將會關閉。為獲得更好的相容性和安全性,建議升級至2.x版本(可選)。composer self-update --2重要檢查專案依賴的包是否支援Composer 2.x,必要時更新專案代碼和配置。
如果在下載過程中出現
Content-Length錯誤,通常是由於資料下載中斷,導致實際接收到的資料與預期值不一致。清理Composer緩衝後重新執行安裝命令。
# 刪除 .composer 目錄 Remove-Item -Recurse -Force $HOME\.composer # 刪除 /tmp 目錄中的所有內容 Remove-Item -Recurse -Force C:\tmp\*rm -rf ~/.composer/ && rm -rf /tmp/*網路波動可能導致下載中斷,建議多次執行安裝命令。
檢查網路穩定性,確保網路連接穩定,避免在高峰期時段下載。
問題10:在執行composer時報錯“Could not delete D:\www\touming_keyword_api\vendor\composer\tmp-7fd77eb46d69640d6040743642007957:This can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed.”。

可能導致原因:
Composer 在嘗試安裝依賴時,無法刪除臨時檔案,可能是由於防毒軟體或 Windows 搜尋索引器鎖定了該檔案。
解決方案:
檢查許可權,在 Windows 系統上,可能因為許可權不足,導致 Composer 無法建立或修改需要的檔案。
確保所有 Composer 命令都在管理員模式下運行,避免許可權問題。
確認 Composer 需要的檔案和目錄具有讀寫權限。
檢查包版本的可用性,清理緩衝重新安裝。
檢查所需包的可用版本,例如:
composer show alibabacloud/ecs-20140526 --all清理 Composer 的緩衝,並重新進行安裝:
composer clear-cache
檢查Windows Search服務是否正在運行。該服務可能會對檔案進行索引,從而導致檔案被鎖定。如需停止該服務,請按照以下步驟進行操作:
按
Win + R開啟“運行”對話方塊。輸入
services.msc並按Enter鍵。找到“Windows Search”服務,右鍵點擊並選擇“停止”。
關閉服務後,再次嘗試安裝 Composer 依賴。
解鎖檔案或建立目錄進行安裝。
解鎖檔案以管理員身份運行命令列:
右鍵點擊 CMD 或 PowerShell,選擇“以管理員身份運行”。
使用以下命令刪除鎖定的目錄:
rmdir /S /Q "D:\www\touming_keyword_api\vendor\composer\tmp-7fd77eb46d69640d6040743642007957"確保沒有程式(如防毒軟體、Windows 搜尋索引等)鎖定該檔案。可嘗試暫時禁用防毒軟體,重新運行 Composer 命令。
建立目錄進行安裝,建立一個新的目錄,並在其中進行 Composer 操作:
mkdir D:\new_directory cd D:\new_directory composer require alibabacloud/ecs-20140526 6.0.1
若在安裝過程中出現404錯誤,請更換鏡像源後再進行重新安裝。
composer config -g repo.packagist composer https://packagist.org
問題11:運行composer require alibabacloud/dysmsapi-20170525時報錯:“cURL error 61”。
可能導致原因:
Composer緩衝問題:本機快取損壞或不完整。
鏡像源問題:鏡像源不穩定或不可用。
網路問題:網路連接不穩定或被防火牆攔截。
Composer版本問題:使用了過時版本的Composer。
環境配置問題:環境變數或Composer設定檔異常。
解決方案:
檢查網路連接。
使用命令測試網路是否正常:
curl -I https://mirrors.aliyun.com/composer/p2/alibabacloud/dysmsapi-20170525.json檢查防火牆設定,確保防火牆沒有阻止
curl訪問外部資源。嘗試使用不同網路,切換網路環境(如從公司網路切換到個人網路)。
檢查 Composer 配置,直接使用官方中心倉庫。
composer config -g --list composer config -g repo.packagist composer https://packagist.org在刪除已安裝的Composer包後,請重新安裝並清理Composer緩衝。
刪除本機快取目錄:
rm -rf ~/.composer清除 Composer 緩衝:
composer clear-cache
如仍存在錯誤,請查閱Composer的詳細日誌:
composer install --verbose
問題12:執行composer 安裝阿里雲 SDK 包時,報錯“Your requirements could not be resolved to an installable set of packages.“。
出現該錯誤的原因多種多樣,以下列舉幾個常見樣本協助您解決該報錯。
樣本一
錯誤資訊:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires alibabacloud/cloudauth-20190307 3.4.1, found alibabacloud/cloudauth-20190307[dev-master, 1.0.0, ..., 1.0.7, 2.0.0, ..., 2.9.1, 3.0.0, ..., 3.3.0] but it does not match the constraint.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.可能導致的原因:
指定的版本號碼(如
3.4.1)可能不存在或未發布。當前使用的 Composer 鏡像源未同步到最新版本的包。
網路問題導致無法正確拉取包。
解決方案:
通過以下命令查看該包的所有可用版本:
composer show alibabacloud/XXXXXX --all修改
composer.json檔案中的版本為可用版本,執行composer update重新安裝。切換
Composer鏡像源。運行以下命令切換到 Packagist 官方鏡像源:
composer config -g repo.packagist composer https://repo.packagist.org切換到阿里雲提供的中國內地加速鏡像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
切換完成後,清除緩衝並重新安裝:
composer clear-cache composer install的
檢查網路連接是否正常,嘗試使用穩定的網路環境。如果仍然失敗,可以嘗試手動下載
.zip或.tar.gz格式的包檔案並使用本地路徑安裝:composer require alibabacloud/XXXXXX@dev --prefer-source
樣本二
錯誤資訊:

問題原因:
在安裝alibabacloud/cloudauth-20190307:3.9.2時,其依賴的alibabacloud/tea-oss-utils:0.3.1要求guzzlehttp/psr7的版本為[1.0.0,...,2.0.0),但當前環境已安裝的guzzlehttp/psr7版本已被固定為[1.0.0,..,1.9.1],因此導致依賴衝突。
解決方案:
強制更新依賴版本。
composer require alibabacloud/cloudauth-20190307 3.9.2 -W在
composer.json檔案require中添加guzzlehttp/psr7的版本約束,例如"guzzlehttp/psr7": "^1.0",運行以下命令更新依賴。composer update刪除
composer.lock並執行如下命令重新安裝。composer install --prefer-source
問題12:在調用OpenAPI時提示“cURL error 60: SSL certificate problem: unable to get local issuer certificate”。
導致原因:
未下載 CA 憑證包:系統中缺少受信任的 CA 憑證檔案,導致 cURL 無法驗證 SSL 憑證。
PHP 的 cURL 配置未指定 CA 憑證路徑:在
php.ini檔案中未正確配置curl.cainfo或openssl.cafile參數。PHP 服務未重啟:修改
php.ini檔案後未重啟 PHP 服務,導致配置未生效。
解決方案:
您需要下載一個受信任的CA認證,例如Mozilla的CA認證庫。將下載的
cacert.pem檔案儲存到一個固定目錄。重要確保檔案路徑不包含中文或特殊字元,以避免出現潛在問題。
配置PHP的SSL憑證路徑。
開啟 PHP 的設定檔
php.ini,可以通過命令php --ini尋找該檔案位置。在
php.ini檔案中尋找curl.cainfo,將其值設定為CA認證的絕對路徑,並去掉該配置項前的;。# 樣本 curl.cainfo = "D:\path\to\cacert.pem" openssl.cafile = "D:\path\to\cacert.pem"編輯完成後儲存檔案。
說明請將樣本中的
D:\path\to\cacert.pem路徑替換為您實際下載的CA認證的絕對路徑。
重啟PHP服務。
問題13:Composer 安裝失敗提示“the package is fixed to version 1.0.3 (lock file version)或ralouphie/mimey 2.1.0 requires php ^5.4|^7.0 your php version (8.2.27) does not satisfy that requirement.”。
導致原因:
版本衝突:
某些依賴項被
composer.lock檔案鎖定了版本。Composer 預設不會自動更新這些鎖定版本的依賴包。
例如:
alibabacloud/cloudauth-20190307要求alibabacloud/openplatform-20191219的2.0.1版本,但當前鎖定為1.0.3。
PHP 版本不相容:
使用的是 PHP 8.2,但某些依賴包只支援 PHP 5.4 ~ 7.x。
例如:
ralouphie/mimey 2.1.0只支援 PHP^5.4|^7.0,而你的環境是 PHP8.2.27。
解決方案:
參數強制升級所有相關依賴:
composer update --with-all-dependencies # 或簡寫: composer update -W說明此操作將遞迴更新所有相關依賴包,包括被 composer.lock 鎖定的舊版本,以協助解決版本衝突問題。
清理
composer.lock和vendor/後重新安裝(適用於嚴重依賴混亂):rm composer.lock vendor/ composer clear-cache composer install重要此操作將移除所有已安裝的依賴項。
若依賴包暫不支援 PHP 8,請臨時降級至較低版本的 PHP,以確保相容性。
問題14:Script @php think service:discover handling the post-autoload-dump event returned with error code 255。
導致原因:
在運行 composer install 或 update 後,Composer 嘗試執行 ThinkPHP 的自動服務發現命令
php think service:discover時失敗了。導致整個安裝流程中斷。記憶體溢出或其他錯誤。
解決方案:
臨時禁用服務發現指令碼,修改專案根目錄下的
composer.json檔案:{ "scripts": { "post-autoload-dump": "@php think service:discover" } }改為:
{ "scripts": { "post-autoload-dump": "@echo Skipping 'php think service:discover'" } }重新執行
composer dump-autoload。增加 PHP 記憶體限制,修改
php.ini檔案中的以下配置:memory_limit = 512M
問題15:Undefined property: Darabonba\OpenApi\Models\Config::$tlsMinVersion
問題原因:alibabacloud/darabonba-openapi的版本低於0.2.14。
解決方案:運行以下命令更新alibabacloud/darabonba-openapi的版本不低於0.2.14。
composer require alibabacloud/darabonba-openapi >=0.2.14 支援人員
以上問題的解決方案旨在協助您更友好地使用阿里雲SDK。如果您在使用過程中遇到其他問題,請通過以下方式與我們聯絡:
提交工單:阿里雲提交工單頁面。
如果您有相關需求或反饋,可以添加DingTalk群聯絡阿里雲技術支援人員,群號為60965016010。