Tous les produits
Search
Centre de documentation

Object Storage Service:Initialisation (SDK PHP V1)

Dernière mise à jour :Aug 18, 2026

OssClient est le client PHP pour Object Storage Service (OSS). Il permet de gérer les ressources OSS, telles que les buckets et les fichiers. Pour envoyer une requête OSS à l'aide du kit de développement logiciel (SDK) PHP, vous devez initialiser une instance OssClient et adapter sa configuration par défaut selon vos besoins.

Créer un OssClient

Signature V4 (recommandée)

Privilégiez l'algorithme Signature V4, plus sécurisé. Lors de l'initialisation d'un client avec la signature V4, vous devez spécifier un endpoint et l'ID d'une région Alibaba Cloud standard. L'ID de région identifie la région d'origine de la requête. Par exemple, spécifiez cn-hangzhou. Vous devez également déclarer OssClient::OSS_SIGNATURE_VERSION_V4. Les versions 2.7.0 et ultérieures du SDK PHP OSS prennent en charge la signature V4.

Le code suivant montre comment créer un OssClient à l'aide d'un nom de domaine OSS et de la signature V4. Pour d'autres scénarios, tels que la création d'un OssClient via un nom de domaine personnalisé ou le Security Token Service (STS), adaptez le code de cet exemple.

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

try {
    // Obtain access credentials from environment variables and save them to the provider. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
    $provider = new EnvironmentVariableCredentialsProvider();
    // Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";    
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,        
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        // Specify the region that corresponds to the endpoint. For example, specify cn-hangzhou.
        "region" => "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    printf($e->getMessage() . "\n");
    return;
}

Signature V1 (non recommandée)

Important

Créer un OssClient à l'aide d'un nom de domaine OSS

Le code suivant illustre la création d'un OssClient via un nom de domaine OSS. Pour plus d'informations sur les noms de domaine OSS des différentes régions, consultez la rubrique Régions et endpoints.

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;

// Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
$provider = new EnvironmentVariableCredentialsProvider();
// The endpoint of the China (Hangzhou) region is used as an example. Specify an endpoint based on your actual region.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint
    );
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    print $e->getMessage();
}
                    

Créer un OssClient à l'aide d'un nom de domaine personnalisé

L'exemple ci-dessous montre comment instancier un OssClient avec un nom de domaine personnalisé. Pour en savoir plus sur l'accès à OSS via un nom de domaine personnalisé, reportez-vous à la section Accéder à OSS à l'aide d'un nom de domaine personnalisé.

Important

La méthode listBuckets n'est pas compatible avec les noms de domaine personnalisés.

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;

// Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
$provider = new EnvironmentVariableCredentialsProvider();
// Specify a custom domain name. For example, http://example.com.
$endpoint = "http://example.com";

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "cname"	=> true
    );
    $ossClient = new OssClient($config);    
} catch (OssException $e) {
    print $e->getMessage();
}    
                

Créer un OssClient à l'aide de STS

Voici un exemple de création d'un OssClient avec STS.

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;
// Before you run this sample code, make sure that the AccessKey pair (AccessKey ID and AccessKey secret) and security token of STS are configured in the environment variables.
$provider = new EnvironmentVariableCredentialsProvider();
// The endpoint of the China (Hangzhou) region is used as an example. Specify an endpoint based on your actual region.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,        
    );
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    print $e->getMessage();
}
                    
                    

Créer un OssClient à l'aide d'un rôle RAM d'instance

Vous pouvez accéder à OSS depuis une instance Elastic Compute Service (ECS) en utilisant un rôle RAM d'instance. Ce rôle permet d'associer un rôle à une instance ECS afin d'accéder à OSS depuis celle-ci à l'aide d'identifiants temporaires fournis par STS. Le système génère et met automatiquement à jour ces identifiants. Votre application peut les récupérer via une URL de métadonnées d'instance spécifique.

Important

Avant de créer un OssClient à l'aide d'un rôle RAM d'instance, exécutez la commande suivante pour installer le SDK avec Composer.

composer require alibabacloud/credentials

Le code suivant montre comment créer un OssClient en utilisant un rôle RAM d'instance.

<?php

if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
  }
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\CredentialsProvider;
use AlibabaCloud\Credentials\Credential;
use OSS\Credentials\StaticCredentialsProvider;
use OSS\Core\OssException;
use OSS\OssClient;
class AlibabaCloudCredentialsWrapper implements CredentialsProvider{
    /**
     * @var \OSS\Credentials\Credentials
     */
    private $wrapper;
    public function __construct($wrapper){
        $this->wrapper = $wrapper;
    }
    public function getCredentials(){
        $ak = $this->wrapper->getAccessKeyId();
        $sk = $this->wrapper->getAccessKeySecret();
        $token = $this->wrapper->getSecurityToken();
        return new StaticCredentialsProvider($ak, $sk, $token);
    }
}
$ecsRamRole = new Credential(array(
    // Specify the credential type. The value is fixed to ecs_ram_role.
    'type'      => 'ecs_ram_role',
    // Specify the role name.
    'role_name' => 'EcsRamRoleOssTest',
));
$providerWarpper = new AlibabaCloudCredentialsWrapper($ecsRamRole);
$provider = $providerWarpper->getCredentials();
$config = array(
    'provider' => $provider,
    // The endpoint of the China (Hangzhou) region is used as an example. Set it to https://oss-cn-hangzhou.aliyuncs.com. For other regions, specify the actual endpoint.
    'endpoint'=> 'https://oss-cn-hangzhou.aliyuncs.com'
);
try {
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    print $e->getMessage();
}

Créer un OssClient à l'aide de STSAssumeRole

Important

Avant de créer un OssClient à l'aide de STSAssumeRole, exécutez la commande suivante pour installer le SDK avec Composer.

composer require alibabacloud/credentials

L'exemple ci-dessous illustre la création d'un OssClient via STSAssumeRole.

<?php

if (is_file(__DIR__ . '/../autoload.php')) {
 require_once __DIR__ . '/../autoload.php';
 }
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
 require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\CredentialsProvider;
use AlibabaCloud\Credentials\Credential;
use OSS\Credentials\StaticCredentialsProvider;
use OSS\Core\OssException;
use OSS\OssClient;
class AlibabaCloudCredentialsWrapper implements CredentialsProvider{
 /**
 * @var \OSS\Credentials\Credentials
 */
 private $wrapper;
 public function __construct($wrapper){
 $this->wrapper = $wrapper;
 }
 public function getCredentials(){
 $ak = $this->wrapper->getAccessKeyId();
 $sk = $this->wrapper->getAccessKeySecret();
 $token = $this->wrapper->getSecurityToken();
 return new StaticCredentialsProvider($ak, $sk, $token);
 }
}
$ramRoleArn = new Credential(array(
 // Specify the credential type. The value is fixed to ram_role_arn.
 'type' => 'ram_role_arn',
 // Before you run this sample code, make sure that you have used the AccessKey pair of a RAM user to set the YOUR_ACCESS_KEY_ID and YOUR_ACCESS_KEY_SECRET environment variables.
 'access_key_id' => getenv('YOUR_ACCESS_KEY_ID'),
 'access_key_secret' => getenv('YOUR_ACCESS_KEY_SECRET'),
 // Specify the Alibaba Cloud Resource Name (ARN) of the role to assume. The format is acs:ram::$accountID:role/$roleName.
 'role_arn' => 'acs:ram::17464958********:role/ossststest',
 // Specify a custom role session name to distinguish different tokens.
 'role_session_name' => 'yourRoleSessionName',
 // Specify a custom policy.
 'policy' => '',
));
$providerWarpper = new AlibabaCloudCredentialsWrapper($ramRoleArn);
$provider = $providerWarpper->getCredentials();
$config = array(
 'provider' => $provider,
 // The endpoint of the China (Hangzhou) region is used as an example. Set it to https://oss-cn-hangzhou.aliyuncs.com. For other regions, specify the actual endpoint.
 'endpoint'=> 'https://oss-cn-hangzhou.aliyuncs.com'
);
try {
 $ossClient = new OssClient($config);
 var_dump($ossClient);
} catch (OssException $e) {
 print $e->getMessage();
}

Configurer un OssClient

Vous pouvez configurer divers paramètres pour un OssClient, tels que le serveur proxy, le délai de connexion et le nombre maximal de connexions.

Paramètre

Description

Méthode

timeout

Délai d'expiration pour la transmission des données au niveau de la couche socket. La valeur par défaut est 5184000. Unité : secondes.

$ossClient->setTimeout(60);

connectTimeout

Délai d'expiration pour l'établissement d'une connexion. La valeur par défaut est 10. Unité : secondes.

$ossClient->setConnectTimeout(600);

maxRetries

Nombre maximal de tentatives pour une requête ayant échoué. La valeur par défaut est 3.

$ossClient->setMaxTries(5);

useSSL

Indique si la vérification du certificat SSL doit être activée. Valeurs possibles :

  • true : active la vérification du certificat SSL.

  • false (par défaut) : désactive la vérification du certificat SSL.

$ossClient->setUseSSL(true);

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set. 
$provider = new EnvironmentVariableCredentialsProvider();
// The endpoint of the China (Hangzhou) region is used as an example. Specify an endpoint based on your actual region.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
    // Set the connection timeout period.
    $ossClient->setConnectTimeout(300);
    // Set the maximum number of retries for failed requests.
    $ossClient->setMaxTries(5);    
    // Set the timeout period for data transmission at the socket layer.
    $ossClient->setTimeout(30);
    // Specify whether to enable SSL certificate verification.
    $ossClient->setUseSSL(true);
} catch (OssException $e) {
    print $e->getMessage();
}            

Configurer un serveur proxy

Les versions PHP 5.3 et ultérieures prennent en charge la configuration du serveur proxy.

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;
// Before you run this sample code, make sure that the AccessKey pair (AccessKey ID and AccessKey secret) and security token of STS are configured in the environment variables.
$provider = new EnvironmentVariableCredentialsProvider();
// The endpoint of the China (Hangzhou) region is used as an example. Specify an endpoint based on your actual region.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Set the proxy server address. For example, http://<username>:<password>@<proxy_ip>:<proxy_port>.
$request_proxy = "yourRequestProxy"
try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "request_proxy"=> $request_proxy,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);    
} catch (OssException $e) {
    print $e->getMessage();
}