Todos os produtos
Search
Central de documentação

Object Storage Service:Inicialização (PHP SDK V1)

Última atualização: Jul 03, 2026

OssClient é o cliente PHP para Object Storage Service (OSS). Use-o para gerenciar recursos do OSS, como buckets e arquivos. Para enviar uma solicitação ao OSS usando o kit de desenvolvimento de software (SDK) PHP, você deve inicializar uma instância de OssClient e modifique suas configurações padrão conforme necessário.

Crie um OssClient

Signature V4 (Recommended)

Utilize o algoritmo Signature V4, que oferece maior segurança. Ao inicializar um cliente com Signature V4, especifique um endpoint e um ID de região de uso geral da Alibaba Cloud. O ID da região identifica a origem da solicitação. Por exemplo, especifique cn-hangzhou. Declare também OssClient::OSS_SIGNATURE_VERSION_V4. As versões 2.7.0 e posteriores do OSS PHP SDK suportam Signature V4.

O código abaixo exemplifica a criação de um OssClient usando um nome de domínio do OSS e Signature V4. Para outros cenários, como crie um OssClient com um nome de domínio personalizado ou Security Token Service (STS), adapte o código deste exemplo.

<?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 (Not recommended)

Importante

Crie um OssClient usando um nome de domínio do OSS

O exemplo a seguir demonstra como crie um OssClient utilizando um nome de domínio do OSS. Para mais detalhes sobre os nomes de domínio do OSS em diferentes regiões, consulte Regiões e 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();
}
                    

Crie um OssClient usando um nome de domínio personalizado

Este trecho de código ilustra a criação de um OssClient com um nome de domínio personalizado. Para saber mais sobre o acesso ao OSS via nome de domínio personalizado, veja Acessar o OSS usando um nome de domínio personalizado.

Importante

Não é possível usar o método listBuckets com um nome de domínio personalizado.

<?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();
}    
                

Crie um OssClient usando STS

Confira abaixo um exemplo de como crie um OssClient utilizando 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();
}
                    
                    

Crie um OssClient usando uma função ram de instância

É possível acessar o OSS a partir de uma instância do Elastic Compute Service (ECS) por meio de uma função ram de instância. Esse recurso permite associar uma função a uma instância ECS, possibilitando o acesso ao OSS de dentro da instância com credenciais temporárias do STS. O sistema gera e atualiza essas credenciais automaticamente. Sua aplicação pode obtê-las em uma URL de metadados da instância específica.

Importante

Antes de crie um OssClient com uma função ram de instância, execute o comando abaixo para instale o SDK via Composer.

composer require alibabacloud/credentials

O código a seguir mostra como crie um OssClient utilizando uma função ram de instância.

<?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();
}

Crie um OssClient usando STSAssumeRole

Importante

Para crie um OssClient com STSAssumeRole, execute primeiro o comando abaixo e instale o SDK usando o Composer.

composer require alibabacloud/credentials

Veja a seguir um exemplo de criação de OssClient com 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();
}

Configure um OssClient

Defina parâmetros para o OssClient, como servidor proxy, tempo limite de conexão e número máximo de conexões.

Parâmetro

Descrição

Método

timeout

Tempo limite para transmissão de dados na camada de socket. O valor padrão é 5184000. Unidade: segundos.

$ossClient->setTimeout(60);

connectTimeout

Tempo limite para estabelecer uma conexão. O valor padrão é 10. Unidade: segundos.

$ossClient->setConnectTimeout(600);

maxRetries

Número máximo de tentativas para uma solicitação com falha. O valor padrão é 3.

$ossClient->setMaxTries(5);

useSSL

Define se a verificação de certificado SSL deve ser ativada. Valores válidos:

  • true: ativa a verificação de certificado SSL.

  • false (padrão): desativa a verificação de certificado 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();
}            

Configure um servidor proxy

As versões 5,3 e superiores do PHP permitem a configuração de servidor 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();
}