このトピックでは、Windows 上の統合開発環境 (IDE) で Alibaba Cloud SDK for PHP を使用する方法について説明します。この例では、Visual Studio (VS) Code を使用します。
前提条件
PHP と Composer がインストールされていること。詳細については、「PHP のインストール」をご参照ください。
-
VS Code がインストールされていること。手順については、「Windows での PHP 開発環境のセットアップ」をご参照ください。
SDK の使用
OpenAPI Explorer で提供されるサンプルプロジェクトの使用
特定の API オペレーションのサンプルプロジェクトのダウンロードに失敗することがあります。この場合、既存のプロジェクトで SDK を使用できます。詳細については、このトピックの「既存のプロジェクトでの SDK の使用」セクションをご参照ください。
-
OpenAPI Explorer に移動し、呼び出す API オペレーションを検索します。たとえば、ECS の DescribeRegions API を呼び出すには、検索バーに DescribeRegions と入力し、検索結果で API 名をクリックして API デバッグページを開きます。
-
[Parameters] タブで、要件に基づいてパラメーターを指定します。パラメーターを指定する際には、デバッグページの右側にある [Document] タブの情報を読んでください。オペレーションの使用上の注意と各パラメーターの説明を必ず理解してください。課金関連の情報にご注意ください。
[Documentation] タブの リクエストパラメーター テーブルには、
InstanceChargeType、ResourceType、AcceptLanguageなどの各パラメーターの名前、タイプ、説明、および値の例がリストされています。レスポンスパラメーター はその下にリストされています。 -
デバッグページの右側にある[SDK サンプルコード] タブで、PHP プログラミング言語を選択し、[プロジェクトをダウンロード] をクリックして、コンピューターに完全なサンプルプロジェクトパッケージをダウンロードします。その後、パッケージを解凍します。
SDK バージョン V2.0 (推奨) を選択し、言語タブで PHP を選択してから、[Download Project] をクリックします。
-
解凍したパッケージを 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が返された場合、呼び出しは成功です。PS D:\xxx\download\e11baaaa2-4f02-4671-8432-2423be5a5a6f-PHP> php src/Sample.php [2024-07-03T09:59:56.716282+00:00] tea-console-log.INFO: {"headers":{"Date":["Wed, 03 Jul 2024 10:00:00 GMT"],"Content-Type":["application/json;charset=utf-8"],"Connection":["keep-alive"],"Keep-Alive":["timeout=25"],"Vary":["Accept-Encoding"],"Access-Control-Allow-Origin":["*"],"Access-Control-Expose-Headers":["*"],"x-acs-request-id":["3BA5A6C3-B296-5895-914A-8147910DE781"],"x-acs-trace-id":["086d8bd615f72d4d27daa5a7a7b4b89a"],"ETag":["22UU6WnEtZKE9S/VA80fvig"]},"statusCode":200,"body":{"Regions":{"Region":[{"LocalName":"China (Qingdao)","RegionEndpoint":"ecs.cn-qingdao.aliyuncs.com","RegionId":"cn-qingdao"},{"LocalName":"China (Beijing)","RegionEndpoint":"ecs.cn-beijing.aliyuncs.com","RegionId":"cn-beijing"},{"LocalName":"China (Zhangjiakou)","RegionEndpoint":"ecs.cn-zhangjiakou.aliyuncs.com","RegionId":"cn-zhangjiakou"},{"LocalName":"China (Hohhot)","RegionEndpoint":"ecs.cn-huhehaote.aliyuncs.com","RegionId":"cn-huhehaote"},{"LocalName":"China (Ulanqab)","RegionEndpoint":"ecs.cn-wulanchabu.aliyuncs.com","RegionId":"cn-wulanchabu"},{"LocalName":"China (Hangzhou)","RegionEndpoint":"ecs.aliyuncs.com","RegionId":"cn-hangzhou"},{"LocalName":"China (Shanghai)","RegionEndpoint":"ecs.cn-shanghai.aliyuncs.com","RegionId":"cn-shanghai"},...]},"RequestId":"3BA5A6C3-B296-5895-914A-8147910DE781"}} [] []
既存のプロジェクトでの SDK の使用
-
SDK の入手: SDK センターにアクセスし、使用するクラウド製品を選択します。 このトピックでは ECS を例として使用します。 [SDK バージョン] で [V2.0] を選択し、言語で [PHP] を選択します。
SDK ページには、PHP 5.6 以降とグローバルインストールされた Composer という環境要件が記載されています。Packagist から SDK をインストールするには、
composer require alibabacloud/ecs-20140526 4.1.7コマンドを実行します。Alibaba Cloud Composer ミラー を使用するには、composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/を実行します。 VS Code を開きます。トップナビゲーションバーで、[File] > [Open Folder] を選択します。プロジェクトフォルダーを新規作成して選択するか、既存のプロジェクトフォルダーを選択します。この例では、phpprojects という名前のフォルダーが作成され、選択されています。
SDK をインストールするためのコマンドをコピーし、ターミナルでそのコマンドを実行して SDK をインストールします。
[EXPLORER] パネルで、空白の領域を右クリックし、[New File] を選択して PHP ファイルを作成します。ファイルに demo.php という名前を付けます。
-
クライアントを初期化します。Alibaba Cloud の API オペレーションを呼び出すには、まずクライアントを初期化する必要があります。この例では、ECS クライアントが初期化されます。
重要クライアントの初期化にはアクセスキーペアが必要です。AccessKey を作成
アクセスキーペアを取得したら、環境変数として設定します。Linux、macOS、Windows システムで環境変数を設定
エンドポイント設定:Endpoints
<?php use Darabonba\OpenApi\Models\Config; use AlibabaCloud\SDK\Ecs\V20140526\Ecs; class Sample { /** * ECS クライアントインスタンスを作成します。 * このメソッドは、ECS 関連の操作を実行するために使用できる ECS クライアントオブジェクトを初期化して返します。 * 環境変数からアクセスキー ID と AccessKey シークレットを読み取ってクライアントを設定し、機密情報の安全な保存とアクセスを保証します。 * * @return Ecs 設定済みの ECS クライアントインスタンス。 */ public static function createClient() { // 設定オブジェクトを作成します。 $config = new Config([ "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 環境変数から RAM ユーザーのアクセスキー 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 の
DescribeRegionsAPI を呼び出します。説明各 API には、
${APIName}${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 と AccessKey シークレットを読み取ってクライアントを設定し、機密情報の安全な保存とアクセスを保証します。 * * @return Ecs 設定済みの ECS クライアントインスタンス。 */ public static function createClient() { // 設定オブジェクトを作成します。 $config = new Config([ "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 環境変数から RAM ユーザーのアクセスキー ID を取得します。 "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // 環境変数から RAM ユーザーの AccessKey シークレットを取得します。 "endpoint" => "ecs.cn-hangzhou.aliyuncs.com" // ECS サービスのエンドポイントを設定します。 ]); // 前述の設定を使用して、新しい Ecs クライアントインスタンスを作成します。 return new Ecs($config); } /** * * この関数は、SDK クライアントを使用して DescribeRegions API オペレーションを呼び出す方法を示します。 * クライアントインスタンスを作成し、リクエストオブジェクトを構築し、API オペレーションの呼び出しを試みます。 * 呼び出しが失敗した場合、例外がキャッチされ、エラーメッセージが出力されます。 */ public static function main() { // SDK クライアントインスタンスを作成します。 $client = self::createClient(); // パラメーターを渡さずに DescribeRegionsRequest リクエストオブジェクトを作成します。 $describeRegionsRequest = new DescribeRegionsRequest([]); // パラメーターを渡さずに RuntimeOptions インスタンスを作成します。 $runtime = new RuntimeOptions([]); try { // クライアントの describeRegionsWithOptions メソッドを使用して API オペレーションを呼び出します。 // try-catch ブロックを使用して、潜在的な例外を処理します。 $result = $client->describeRegionsWithOptions($describeRegionsRequest, $runtime); print_r($result); } catch (Exception $error) { // これはデモ用です。本番環境では、例外を無視しないでください。 var_dump($error->message); } } } Sample::main(); -
例外を処理します。実際のビジネスシナリオでは例外を慎重に処理し、プロジェクトで例外を無視しないでください。例外の報告、ログの記録、リトライなどの操作を実行して例外を適切に処理することを推奨します。これにより、システムの堅牢性と安定性が確保されます。SDK for PHP での例外処理の詳細については、「例外の処理」をご参照ください。
<?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; use AlibabaCloud\Tea\Exception\TeaError; use AlibabaCloud\Tea\Exception\TeaUnableRetryError; class Sample { /** * ECS クライアントインスタンスを作成します。 * このメソッドは、ECS 関連の操作を実行するために使用できる ECS クライアントオブジェクトを初期化して返します。 * 環境変数からアクセスキー ID と AccessKey シークレットを読み取ってクライアントを設定し、機密情報の安全な保存とアクセスを保証します。 * * @return Ecs 設定済みの ECS クライアントインスタンス。 */ public static function createClient() { // 設定オブジェクトを作成します。 $config = new Config([ "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // 環境変数から RAM ユーザーのアクセスキー ID を取得します。 "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // 環境変数から RAM ユーザーの AccessKey シークレットを取得します。 "endpoint" => "ecs.cn-hangzhou.aliyuncs.com" // ECS サービスのエンドポイントを設定します。 ]); // 前述の設定を使用して、新しい Ecs クライアントインスタンスを作成します。 return new Ecs($config); } /** * * この関数は、SDK クライアントを使用して DescribeRegions API オペレーションを呼び出す方法を示します。 * クライアントインスタンスを作成し、リクエストオブジェクトを構築し、API オペレーションの呼び出しを試みます。 * 呼び出しが失敗した場合、例外がキャッチされ、エラー情報が出力されます。 */ public static function main() { // SDK クライアントインスタンスを作成します。 $client = self::createClient(); // パラメーターを渡さずに DescribeRegionsRequest リクエストオブジェクトを作成します。 $describeRegionsRequest = new DescribeRegionsRequest([]); // パラメーターを渡さずに RuntimeOptions インスタンスを作成します。 $runtime = new RuntimeOptions([]); try { // クライアントの describeRegionsWithOptions メソッドを使用して API オペレーションを呼び出します。 // try-catch ブロックを使用して、潜在的な例外を処理します。 $result = $client->describeRegionsWithOptions($describeRegionsRequest, $runtime); print_r($result); } catch (Exception $error) { if ($error instanceof TeaUnableRetryError) { // これはデモ用です。本番環境では、例外を無視しないでください。 print_r($error->getLastException()); } else if ($error instanceof TeaError) { // これはデモ用です。本番環境では、例外を無視しないでください。 print_r("message:" . $error->getMessage() . "\n"); print_r("code:" . $error->getCode() . "\n"); print_r($error->data); } else { // これはデモ用です。本番環境では、例外を無視しないでください。 print_r("message:" . $error->getMessage()); } } } } Sample::main();
よくある質問
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 サービスを再起動します。