Prise en main des SDK Alibaba Cloud pour PHP dans un IDE sous Windows. Cet exemple utilise Visual Studio (VS) Code.
Prérequis
PHP et Composer sont installés. Pour plus d'informations, consultez Installer PHP.
VS Code est installé. Pour obtenir des instructions, consultez Configurer un environnement de développement PHP sous Windows.
Utiliser un SDK
Utiliser un projet d'exemple fourni dans OpenAPI Explorer
Des projets d'exemple ne sont pas disponibles pour toutes les opérations d'API. Si vous ne parvenez pas à en télécharger un, reportez-vous à la section Utiliser un SDK dans un projet existant.
Accédez à OpenAPI Explorer et recherchez l'opération d'API à appeler. Par exemple, pour appeler l'opération DescribeRegions d'ECS, saisissez DescribeRegions dans la barre de recherche, puis cliquez sur le nom de l'API dans les résultats pour ouvrir la page de débogage.
-
Dans l'onglet Parameters, configurez les paramètres requis. Consultez les informations de l'onglet Document situé à droite de la page de débogage pour prendre connaissance des notes d'utilisation et des descriptions des paramètres. Prêtez une attention particulière aux informations relatives à la facturation.
L'onglet Documentation contient le tableau Request Parameters. Celui-ci liste le nom, le type, la description et la valeur d'exemple de chaque paramètre, tels que
InstanceChargeType,ResourceTypeetAcceptLanguage. Les Response Parameters figurent ci-dessous. -
Dans l'onglet SDK Sample Code, à droite de la page de débogage, sélectionnez le langage PHP, puis cliquez sur Download Project pour télécharger le package du projet d'exemple. Décompressez ensuite le package.
Sélectionnez la version du SDK V2.0 (Recommandé), choisissez PHP dans l'onglet des langages, puis cliquez sur Download Project.
-
Ouvrez le package décompressé dans VS Code, puis exécutez la commande
composer installdans le terminal pour installer les dépendances requises.L'erreur suivante peut survenir lors de l'exécution de la commande
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.Pour corriger cette erreur, modifiez la contrainte de version de la dépendance alibabacloud/ecs-20140526 dans le fichier composer.json.
"alibabacloud/ecs-20140526": "^4.1" -
Exécutez la commande
php src/Sample.phpdans le terminal pour lancer le code d'exemple. Si la réponse retourne"statusCode":200, l'appel a réussi.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"}} [] []
Utiliser un SDK dans un projet existant
-
Obtenez le SDK : rendez-vous sur SDK Center et sélectionnez le produit cloud souhaité. Cet exemple utilise ECS. Pour SDK Version, sélectionnez V2.0, et pour Language, choisissez PHP.
La page du SDK indique les prérequis environnementaux : PHP 5.6 ou ultérieur et Composer installé globalement. Pour installer le SDK depuis Packagist, exécutez la commande
composer require alibabacloud/ecs-20140526 4.1.7. Pour utiliser le miroir Composer d'Alibaba Cloud, exécutezcomposer config -g repo.packagist composer https://mirrors.aliyun.com/composer/. Ouvrez VS Code. Dans la barre de navigation supérieure, choisissez File > Open Folder. Créez et sélectionnez un dossier de projet, ou sélectionnez-en un existant. Dans cet exemple, un dossier nommé phpprojects est créé et sélectionné.
Copiez la commande d'installation du SDK et exécutez-la dans le terminal.
Dans le panneau EXPLORER, faites un clic droit dans la zone vide et sélectionnez New File pour créer un fichier PHP. Nommez ce fichier demo.php.
-
Initialisez un client. Cette étape est obligatoire avant tout appel aux opérations d'API Alibaba Cloud. Cet exemple initialise un client ECS.
ImportantUne paire d'AccessKey est nécessaire pour authentifier votre identité lors de l'initialisation du client. Vous devez donc obtenir une paire d'AccessKey au préalable. Pour plus d'informations, consultez Créer une AccessKey.
Après avoir obtenu la paire d'AccessKey d'un utilisateur RAM, configurez-la dans les variables d'environnement. Pour plus d'informations, consultez Configurer les variables d'environnement sous Linux, macOS et Windows.
Pour plus d'informations sur la configuration de l'endpoint, consultez Endpoints.
<?php use AlibabaCloud\Credentials\Credential\Config; use AlibabaCloud\SDK\Ecs\V20140526\Ecs; class Sample { /** * Create an ECS client instance. * This method initializes and returns an ECS client object that can be used to perform ECS-related operations. * It configures the client by reading the AccessKey ID and AccessKey secret from environment variables, which ensures secure storage and access of sensitive information. * * @return Ecs A configured ECS client instance. */ public static function createClient() { // Create a configuration object. $config = new Config([ "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // Obtain the AccessKey ID of a RAM user from an environment variable. "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // Obtain the AccessKey secret of a RAM user from an environment variable. "endpoint" => "ecs.cn-hangzhou.aliyuncs.com" // Set the endpoint for the ECS service. ]); // Use this configuration to create a new Ecs client instance. return new Ecs($config); } } -
Appelez l'API. Consultez la Documentation API relative à l'API cible. L'exemple suivant appelle l'API
DescribeRegionsd'ECS.RemarqueChaque API possède un objet de requête distinct qui suit la convention de nommage
${APIName}${Request}, commeDescribeRegionsRequest.<?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 { /** * Create an ECS client instance. * This method initializes and returns an ECS client object that can be used to perform ECS-related operations. * It configures the client by reading the AccessKey ID and AccessKey secret from environment variables, which ensures secure storage and access of sensitive information. * * @return Ecs A configured ECS client instance. */ public static function createClient() { // Create a configuration object. $config = new Config([ "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // Obtain the AccessKey ID of a RAM user from an environment variable. "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // Obtain the AccessKey secret of a RAM user from an environment variable. "endpoint" => "ecs.cn-hangzhou.aliyuncs.com" // Set the endpoint for the ECS service. ]); // Use the preceding configuration to create a new Ecs client instance. return new Ecs($config); } /** * * This function demonstrates how to use the SDK client to call the DescribeRegions API operation. * It creates a client instance, constructs a request object, and attempts to call the API operation. * If the call fails, the exception is caught and the error message is printed. */ public static function main() { // Create an SDK client instance. $client = self::createClient(); // Create a DescribeRegionsRequest request object without passing any parameters. $describeRegionsRequest = new DescribeRegionsRequest([]); // Create a RuntimeOptions instance without passing any parameters. $runtime = new RuntimeOptions([]); try { // Call the API operation using the client's describeRegionsWithOptions method. // A try-catch block is used to handle potential exceptions. $result = $client->describeRegionsWithOptions($describeRegionsRequest, $runtime); print_r($result); } catch (Exception $error) { // This is for demonstration purposes only. In a production environment, do not ignore exceptions. var_dump($error->message); } } } Sample::main(); -
Gérez les exceptions. En production, n'ignorez jamais les exceptions. Signalez-les, journalisez-les et mettez en œuvre des mécanismes de nouvelle tentative afin de garantir la robustesse et la stabilité de votre système. Pour plus d'informations, consultez Gérer une exception.
<?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 { /** * Create an ECS client instance. * This method initializes and returns an ECS client object that can be used to perform ECS-related operations. * It configures the client by reading the AccessKey ID and AccessKey secret from environment variables, which ensures secure storage and access of sensitive information. * * @return Ecs A configured ECS client instance. */ public static function createClient() { // Create a configuration object. $config = new Config([ "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), // Obtain the AccessKey ID of a RAM user from an environment variable. "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), // Obtain the AccessKey secret of a RAM user from an environment variable. "endpoint" => "ecs.cn-hangzhou.aliyuncs.com" // Set the endpoint for the ECS service. ]); // Use the preceding configuration to create a new Ecs client instance. return new Ecs($config); } /** * * This function demonstrates how to use the SDK client to call the DescribeRegions API operation. * It creates a client instance, constructs a request object, and attempts to call the API operation. * If the call fails, the exception is caught and the error information is printed. */ public static function main() { // Create an SDK client instance. $client = self::createClient(); // Create a DescribeRegionsRequest request object without passing any parameters. $describeRegionsRequest = new DescribeRegionsRequest([]); // Create a RuntimeOptions instance without passing any parameters. $runtime = new RuntimeOptions([]); try { // Call the API operation using the client's describeRegionsWithOptions method. // A try-catch block is used to handle potential exceptions. $result = $client->describeRegionsWithOptions($describeRegionsRequest, $runtime); print_r($result); } catch (Exception $error) { if ($error instanceof TeaError) { // This is for demonstration purposes only. In a production environment, do not ignore exceptions. print_r("message:" . $error->getMessage() . "\n"); print_r("code:" . $error->getCode() . "\n"); print_r($error->data); } elseif ($error instanceof TeaUnableRetryError) { // This is for demonstration purposes only. In a production environment, do not ignore exceptions. print_r($error->getLastException()); } else { // This is for demonstration purposes only. In a production environment, do not ignore exceptions. print_r("message:" . $error->getMessage()); } } } } Sample::main();
FAQ
-
Que faire si l'erreur « cURL error 60: SSL certificate problem: unable to get local issuer certificate » survient lors d'un appel d'API ?
Téléchargez un certificat d'autorité de certification (CA) de confiance, par exemple celui de Mozilla. Pour plus d'informations, consultez Certificats CA extraits de Mozilla.
Configurez le chemin du certificat SSL pour PHP. Dans le fichier php.ini, localisez le paramètre curl.cainfo, définissez sa valeur sur le chemin absolu du certificat CA, puis supprimez le point-virgule initial (;).
Redémarrez le service PHP.