このトピックでは、Windows 上の統合開発環境 (IDE) で PHP 用 Alibaba Cloud SDK を使用する方法について説明します。この例では、Visual Studio (VS) Code を使用します。
前提条件
PHP と Composer がインストールされていること。詳細については、「Windows に PHP をインストールする」をご参照ください。
VS Code がインストールされていること。詳細については、「Windows に PHP 開発環境を構築する」をご参照ください。
SDK を使用する
OpenAPI Explorer で提供されるサンプルプロジェクトを使用する
特定の API 操作のサンプルプロジェクトのダウンロードに失敗する場合があります。この場合は、既存のプロジェクトで SDK を使用できます。詳細については、このトピックの既存のプロジェクトで SDK を使用するセクションをご参照ください。
OpenAPI Explorer にアクセスします。呼び出す API 操作を検索します。この例では、Elastic Compute Service (ECS) の DescribeRegions 操作を使用します。検索ボックスに DescribeRegions と入力し、検索結果で操作名をクリックして API デバッグページに移動します。

パラメーター タブで、要件に基づいてパラメーターを指定します。パラメーターを指定する際は、デバッグページの右側にあるドキュメント タブの情報をお読みください。操作の使用方法に関する注意事項と各パラメーターの説明を理解していることを確認してください。課金関連の情報に注意してください。

デバッグページの右側にある [SDK サンプルコード] タブで、PHP プログラミング言語を選択し、[プロジェクトのダウンロード] をクリックして、完全なサンプルプロジェクトパッケージをコンピューターにダウンロードします。次に、パッケージを解凍します。

VS Code で解凍したパッケージを開き、ターミナルで
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",ターミナルで
php src/Sample.phpコマンドを実行して、サンプルコードを実行します。応答で"statusCode": 200が返された場合、呼び出しは成功です。
既存のプロジェクトで SDK を使用する
SDK Center にアクセスし、SDK を使用したいクラウドサービスを選択します。この例では、ECS を使用します。[V2.0] を [SDK 生成] ドロップダウンリストから選択し、[すべての言語] セクションで [PHP] を選択します。

VS Code を開きます。上部のナビゲーションバーで、[ファイル] > [フォルダーを開く] を選択します。プロジェクトフォルダーを作成して選択するか、既存のプロジェクトフォルダーを選択します。この例では、phpprojects という名前のフォルダーを作成して選択します。
SDK をインストールするために使用するコマンドをコピーし、ターミナルでコマンドを実行して SDK をインストールします。
[EXPLORER] パネルで、空白領域を右クリックし、[新しいファイル] を選択して PHP ファイルを作成します。ファイル名を demo.php にします。
クライアントを初期化します。Alibaba Cloud API 操作を呼び出すには、最初にクライアントを初期化する必要があります。この例では、ECS クライアントを初期化します。
重要クライアントを初期化するときは、AccessKey ペアを使用して ID 検証を完了する必要があります。この場合、事前に AccessKey ペアを取得する必要があります。AccessKey ペアの取得方法の詳細については、「AccessKey ペアを作成する」をご参照ください。
RAM ユーザーの AccessKey ペアを取得したら、環境変数に AccessKey ペアを設定する必要があります。詳細については、「Linux、macOS、および Windows で環境変数を構成する」をご参照ください。
エンドポイントの設定方法の詳細については、「エンドポイント」をご参照ください。
<?php use AlibabaCloud\Credentials\Credential\Config; use AlibabaCloud\SDK\Ecs\V20140526\Ecs; class Sample { /** * ECS クライアントを作成します。 * このメソッドを使用して、ECS の API 操作を呼び出すために使用できる ECS クライアントを初期化して返します。 * 環境変数から AccessKey ID と AccessKey シークレットを取得して、ECS クライアントを設定できます。これにより、機密情報の漏洩を防ぎ、機密情報への安全なアクセスを保証します。 * * @return Ecs 設定済みの ECS クライアントを返します。 */ public static function createClient() { // 構成オブジェクトを作成します。 $config = new Config([ "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 環境変数から Resource Access Management (RAM) ユーザーの AccessKey ID を取得します。 "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // 環境変数から RAM ユーザーの AccessKey シークレットを取得します。 "endpoint" => "ecs.cn-hangzhou.aliyuncs.com" // ECS エンドポイントを指定します。 ]); // 前述の構成に基づいて別の ECS クライアントを作成します。 return new Ecs($config); } }API 操作を呼び出します。API 操作を呼び出す前に、対応する 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 の API 操作を呼び出すために使用できる ECS クライアントを初期化して返します。 * 環境変数から AccessKey ID と AccessKey シークレットを取得して、ECS クライアントを設定できます。これにより、機密情報の漏洩を防ぎ、機密情報への安全なアクセスを保証します。 * * @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 シークレットを取得します。 "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();例外を処理します。実際のビジネスシナリオでは例外を慎重に処理し、プロジェクトで例外を無視しないでください。例外の報告、ログの記録、再試行の実行などの操作を実行して、例外を適切に処理することをお勧めします。これにより、システムの堅牢性と安定性を確保できます。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 の API 操作を呼び出すために使用できる ECS クライアントを初期化して返します。 * 環境変数から AccessKey ID と AccessKey シークレットを取得して、ECS クライアントを設定できます。これにより、機密情報の漏洩を防ぎ、機密情報への安全なアクセスを保証します。 * * @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 シークレットを取得します。 "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();
FAQ
API 操作の呼び出し時に「cURL error 60: SSL certificate problem: unable to get local issuer certificate」というエラーが報告された場合はどうすればよいですか?
信頼できる認証局 (CA) 証明書をダウンロードする必要があります。たとえば、Mozilla から CA 証明書をダウンロードできます。詳細については、「Mozilla から抽出された CA 証明書」を参照してください。
PHP の SSL 証明書のパスを設定します。php.ini ファイルで curl.cainfo パラメーターを検索し、このパラメーターの値を CA 証明書の絶対パスに設定してから、パラメーターの前にあるセミコロン (;) を削除します。
PHP サービスを再起動します。