全部產品
Search
文件中心

Alibaba Cloud SDK:通過IDE使用阿里雲PHP SDK

更新時間:Jul 10, 2024

本文以在Windows作業系統上,通過VS Code使用阿里雲PHP SDK為例,協助您瞭解如何快速使用阿里雲PHP SDK。

前提條件

使用SDK

使用OpenAPI門戶提供的程式碼範例工程

說明

可能會存在OpenAPI無法下載程式碼範例工程的情況,您可以查看在已有專案中使用阿里雲PHP SDK的介紹。

  1. 搜尋OpenAPI:在OpenAPI門戶搜尋您將要調用的介面。例如調用Elastic Compute Service的DescribeRegions介面,可在搜尋欄中填入DescribeRegions,在搜尋結果中單擊API名稱進入API調試頁面。

    1716346246233_4A41CC11-FA46-4973-BC7B-C4AAD6E7F3F0

  2. 查看OpenAPI參數資訊:在參數配置頁簽中填寫需要的參數資訊。填寫時請參考右側文檔頁簽,充分瞭解介面的說明和注意事項(尤其是費用相關資訊),以及各個參數的具體含義和使用方法。

    1716346635851_0B018C7F-D759-497b-B529-58E23E4AC41B

  3. 下載樣本工程:在右側的SDK樣本頁簽,下載SDK完整工程至本地並解壓。

    image

  4. 安裝樣本工程所需依賴:使用VS Code開啟解壓後的樣本工程,在Terminal中執行composer install命令。

    如果在執行composer install命令時,出現以下報錯。

    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - Root composer.json requires alibabacloud/ecs-20140526 ^4.1.6 -> satisfiable by alibabacloud/ecs-20140526[4.1.6].
        - alibabacloud/ecs-20140526 4.1.6 requires alibabacloud/tea-utils ^0.2.20 -> found alibabacloud/tea-utils[dev-master, 0.1.0, ..., 0.2.19] but it does not match the constraint.

    您可以在composer.json檔案中,修改alibabacloud/ecs-20140526的依賴版本解決。

    "alibabacloud/ecs-20140526": "^4.1",
  5. 運行範例程式碼:在Terminal中執行php src/Sample.php命令。如果返回結果中出現"statusCode":200,則表示調用成功。

    image

在已有專案中使用阿里雲PHP SDK

  1. 擷取SDK:訪問SDK中心,選擇您想要使用的SDK的雲產品,這裡以Elastic Compute Service為例。SDK版本選擇V2.0,語言選擇PHP

    image

  2. 開啟VS Code,在VS Code功能表列,單擊File->Open Folder,建立一個專案檔夾或者選擇一個已有的專案檔夾。例如檔案夾名稱為phpprojects,然後選擇該檔案夾。

  3. 安裝SDK:複製SDK安裝方式,在Terminal中執行。

  4. 建立PHP檔案:右鍵點擊檔案總管空白處,選擇New File...,命名為demo.php。

  5. 初始化用戶端:調用阿里雲OpenAPI需要先初始化用戶端,以初始化ECS用戶端為例。

    重要
    1. 初始化用戶端時需要使用AccessKey完成身分識別驗證,請提前擷取AccessKey。擷取方法請參見建立AccessKey

    2. 擷取RAM使用者的AccessKey之後,還需要在環境變數中設定AccessKey,具體操作步驟請參見在Linux、macOS和Windows系統配置環境變數

    3. endpoint如何設定請參見服務存取點

    <?php
    use AlibabaCloud\Credentials\Credential\Config;
    use AlibabaCloud\SDK\Ecs\V20140526\Ecs;
    
    
    class Sample
    {
        /**
         * 建立一個ECS用戶端執行個體
         * 該方法用於初始化並返回一個ECS用戶端對象,該對象可用於執行ECS相關操作。
         * 它通過讀取環境變數中的存取金鑰ID和存取金鑰秘密來配置用戶端,確保了敏感資訊的安全儲存和訪問。
         * 
         * @return Ecs 返回一個配置好的ECS用戶端執行個體
         */
        public static function createClient()
        {
            // 建立設定物件
            $config = new Config([
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 擷取環境變數中的RAM使用者的Accesskey ID
                "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // 擷取環境變數中的RAM使用者的Accesskey Secret
                "endpoint" => "ecs.cn-hangzhou.aliyuncs.com" // 設定ECS服務的存取點
            ]);
    
            // 使用上述配置建立一個新的Ecs用戶端執行個體
            return new Ecs($config);
        }
    }
  6. 調用API。在調用OpenAPI之前,您需要先瞭解OpenAPI的詳細資料,請查看API文檔,以調用ECS的DescribeRegions為例。

    說明

    每個API都有獨立的請求對象,命名規則為${API名稱}${Request},例如DescribeRegionsRequest。

    <?php
    
    require_once 'vendor/autoload.php';
    
    use AlibabaCloud\SDK\Ecs\V20140526\Ecs;
    use AlibabaCloud\SDK\Ecs\V20140526\Models\DescribeRegionsRequest;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    use Darabonba\OpenApi\Models\Config;
    
    
    class Sample
    {
        /**
         * 建立一個ECS用戶端執行個體
         * 該方法用於初始化並返回一個ECS用戶端對象,該對象可用於執行ECS相關操作。
         * 它通過讀取環境變數中的存取金鑰ID和存取金鑰秘密來配置用戶端,確保了敏感資訊的安全儲存和訪問。
         * 
         * @return Ecs 返回一個配置好的ECS用戶端執行個體
         */
        public static function createClient()
        {
            // 建立設定物件
            $config = new Config([
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 擷取環境變數中的RAM使用者的Accesskey ID
                "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // 擷取環境變數中的RAM使用者的Accesskey Secret
                "endpoint" => "ecs.cn-hangzhou.aliyuncs.com" // 設定ECS服務的存取點
            ]);
    
            // 使用上述配置建立一個新的Ecs用戶端執行個體
            return new Ecs($config);
        }
        /**
         * 
         * 本函數旨在展示如何使用SDK用戶端調用DescribeRegions介面。
         * 它建立一個用戶端執行個體,構造請求對象,並嘗試調用介面。
         * 如果調用失敗,將捕獲異常並輸出錯誤資訊。
         */
        public static function main()
        {
            // 建立SDK用戶端執行個體
            $client = self::createClient();
            // 建立DescribeRegionsRequest請求對象,不傳入任何參數
            $describeRegionsRequest = new DescribeRegionsRequest([]);
            // 建立RuntimeOptions執行個體,不傳入任何參數
            $runtime = new RuntimeOptions([]);
            try {
                // 使用用戶端的describeRegionsWithOptions方法調用介面
                // 這裡使用了try-catch結構來捕獲可能的異常
                $result = $client->describeRegionsWithOptions($describeRegionsRequest, $runtime);
                print_r($result);
            } catch (Exception $error) {
                // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                var_dump($error->message);
            }
        }
    }
    
    Sample::main();
  7. 異常處理:請重視異常處理,切勿在專案中直接忽略異常。建議採取合理的措施來處理異常,比如合理地傳播異常、記錄日誌、嘗試恢複等,以確保系統的健壯性和穩定性。PHP SDK異常處理介紹請參見異常處理

    <?php
    
    require_once 'vendor/autoload.php';
    
    use AlibabaCloud\SDK\Ecs\V20140526\Ecs;
    use AlibabaCloud\SDK\Ecs\V20140526\Models\DescribeRegionsRequest;
    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    use Darabonba\OpenApi\Models\Config;
    
    
    class Sample
    {
        /**
         * 建立一個ECS用戶端執行個體
         * 該方法用於初始化並返回一個ECS用戶端對象,該對象可用於執行ECS相關操作。
         * 它通過讀取環境變數中的存取金鑰ID和存取金鑰秘密來配置用戶端,確保了敏感資訊的安全儲存和訪問。
         * 
         * @return Ecs 返回一個配置好的ECS用戶端執行個體
         */
        public static function createClient()
        {
            // 建立設定物件
            $config = new Config([
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 擷取環境變數中的RAM使用者的Accesskey ID
                "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // 擷取環境變數中的RAM使用者的Accesskey Secret
                "endpoint" => "ecs.cn-hangzhou.aliyuncs.com" // 設定ECS服務的存取點
            ]);
    
            // 使用上述配置建立一個新的Ecs用戶端執行個體
            return new Ecs($config);
        }
        /**
         * 
         * 本函數旨在展示如何使用SDK用戶端調用DescribeRegions介面。
         * 它建立一個用戶端執行個體,構造請求對象,並嘗試調用介面。
         * 如果調用失敗,將捕獲異常並輸出錯誤資訊。
         */
        public static function main()
        {
            // 建立SDK用戶端執行個體
            $client = self::createClient();
            // 建立DescribeRegionsRequest請求對象,不傳入任何參數
            $describeRegionsRequest = new DescribeRegionsRequest([]);
            // 建立RuntimeOptions執行個體,不傳入任何參數
            $runtime = new RuntimeOptions([]);
            try {
                // 使用用戶端的describeRegionsWithOptions方法調用介面
                // 這裡使用了try-catch結構來捕獲可能的異常
                $result = $client->describeRegionsWithOptions($describeRegionsRequest, $runtime);
                print_r($result);
            } catch (Exception $error) {
                if ($error instanceof TeaError) {
                    // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                    print_r("message:" . $error->getMessage() . "\n");
                    print_r("code:" . $error->getCode() . "\n");
                    print_r($error->data);
                } elseif ($error instanceof TeaUnableRetryError) {
                    // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                    print_r($error->getLastException());
                } else {
                    // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
                    print_r("message:" . $error->getMessage());
                }
            }
        }
    }
    
    Sample::main();

常見問題

  • 在調用OpenAPI時提示“cURL error 60: SSL certificate problem: unable to get local issuer certificate”。

    • 您需要下載一個受信任的CA認證,例如Mozilla的CA認證庫

    • 配置PHP的SSL憑證路徑。在php.ini檔案中搜尋curl.cainfo,將值設定為CA認證的絕對路徑,然後去掉前面配置項前的;

    • 重啟PHP服務。

相關文檔

進階文檔