すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:初期化 (PHP SDK V1)

最終更新日:Nov 30, 2025

OssClient は Object Storage Service (OSS) の PHP クライアントです。これを使用して、バケットやファイルなどの OSS リソースを管理できます。PHP SDK を使用して OSS リクエストを送信するには、OssClient インスタンスを初期化し、必要に応じてそのデフォルト構成を変更する必要があります。

OssClient の作成

署名バージョン4 (推奨)

より安全な署名バージョン4 (Signature V4) アルゴリズムを使用します。Signature V4 を使用してクライアントを初期化する場合、エンドポイントと Alibaba Cloud の汎用リージョン ID を指定する必要があります。リージョン ID は、リクエストが送信されるリージョンを識別します。たとえば、cn-hangzhou を指定します。また、OssClient::OSS_SIGNATURE_VERSION_V4 を宣言する必要もあります。OSS PHP SDK バージョン 2.7.0 以降は Signature V4 をサポートしています。

次のコードは、OSS ドメイン名と Signature V4 を使用して OssClient を作成する方法の例です。カスタムドメイン名やセキュリティトークンサービス (STS) を使用して OssClient を作成するなど、他のシナリオについては、この例のコードを変更できます。

<?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 {
    // 環境変数からアクセス認証情報を取得し、プロバイダーに保存します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    $provider = new EnvironmentVariableCredentialsProvider();
    // バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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,
        // エンドポイントに対応するリージョンを指定します。たとえば、cn-hangzhou を指定します。
        "region" => "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    printf($e->getMessage() . "\n");
    return;
}

署名バージョン1 (非推奨)

重要

2025年3月1日以降、OSS の V1 署名アルゴリズムは、新しい UID を持つ新規のお客様にはご利用いただけなくなります。2025年9月1日以降、OSS は V1 署名アルゴリズムの更新とメンテナンスを終了し、V1 署名アルゴリズムは新しいバケットでは利用できなくなります。ビジネスへの影響を防ぐため、できるだけ早く V1 署名を V4 署名にアップグレードしてください。

OSS ドメイン名を使用した OssClient の作成

次のコードは、OSS ドメイン名を使用して OssClient を作成する方法の例です。さまざまなリージョンの OSS ドメイン名の詳細については、「リージョンとエンドポイント」をご参照ください。

<?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;

// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 中国 (杭州) リージョンのエンドポイントを例として使用します。実際のリージョンに基づいてエンドポイントを指定してください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

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

カスタムドメイン名を使用した OssClient の作成

次のコードは、カスタムドメイン名を使用して OssClient を作成する方法の例です。カスタムドメイン名を使用して OSS にアクセスする方法の詳細については、「カスタムドメイン名を使用した OSS へのアクセス」をご参照ください。

重要

カスタムドメイン名で listBuckets メソッドを使用することはできません。

<?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;

// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// カスタムドメイン名を指定します。例: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();
}    
                

STS を使用した OssClient の作成

次のコードは、STS を使用して OssClient を作成する方法の例です。

<?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;
// このサンプルコードを実行する前に、STS の AccessKey ペア (AccessKey ID と AccessKey Secret) とセキュリティトークンが環境変数に設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 中国 (杭州) リージョンのエンドポイントを例として使用します。実際のリージョンに基づいてエンドポイントを指定してください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

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

インスタンス RAM ロールを使用した OssClient の作成

インスタンス RAM ロールを使用して、Elastic Compute Service (ECS) インスタンスから OSS にアクセスできます。インスタンス RAM ロールを使用すると、ロールを ECS インスタンスに関連付けることができます。これにより、STS からの一時的な認証情報を使用して、インスタンス内から OSS にアクセスできます。システムは一時的な認証情報を自動的に生成および更新します。ご利用のアプリケーションは、指定されたインスタンスメタデータ URL から一時的な認証情報を取得できます。

重要

インスタンス RAM ロールを使用して OssClient を作成する前に、次のコマンドを実行して Composer で SDK をインストールする必要があります。

composer require alibabacloud/credentials

次のコードは、インスタンス RAM ロールを使用して OssClient を作成する方法の例です。

<?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(
    // 認証情報のタイプを指定します。値は ecs_ram_role に固定されています。
    'type'      => 'ecs_ram_role',
    // ロール名を指定します。
    'role_name' => 'EcsRamRoleOssTest',
));
$providerWarpper = new AlibabaCloudCredentialsWrapper($ecsRamRole);
$provider = $providerWarpper->getCredentials();
$config = array(
    'provider' => $provider,
    // 中国 (杭州) リージョンのエンドポイントを例として使用します。https://oss-cn-hangzhou.aliyuncs.com に設定します。他のリージョンについては、実際のエンドポイントを指定してください。
    'endpoint'=> 'https://oss-cn-hangzhou.aliyuncs.com'
);
try {
    $ossClient = new OssClient($config);
} catch (OssException $e) {
    print $e->getMessage();
}

STSAssumeRole を使用した OssClient の作成

重要

STSAssumeRole を使用して OssClient を作成する前に、次のコマンドを実行して Composer で SDK をインストールする必要があります。

composer require alibabacloud/credentials

次のコードは、STSAssumeRole を使用して OssClient を作成する方法の例です。

<?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(
 // 認証情報のタイプを指定します。値は ram_role_arn に固定されています。
 'type' => 'ram_role_arn',
 // このサンプルコードを実行する前に、RAM ユーザーの AccessKey ペアを使用して、YOUR_ACCESS_KEY_ID および YOUR_ACCESS_KEY_SECRET 環境変数を設定していることを確認してください。
 'access_key_id' => getenv('YOUR_ACCESS_KEY_ID'),
 'access_key_secret' => getenv('YOUR_ACCESS_KEY_SECRET'),
 // 偽装するロールの Alibaba Cloud リソースネーム (ARN) を指定します。フォーマットは acs:ram::$accountID:role/$roleName です。
 'role_arn' => 'acs:ram::17464958********:role/ossststest',
 // 異なるトークンを区別するために、カスタムロールセッション名を指定します。
 'role_session_name' => 'yourRoleSessionName',
 // カスタムポリシーを指定します。
 'policy' => '',
));
$providerWarpper = new AlibabaCloudCredentialsWrapper($ramRoleArn);
$provider = $providerWarpper->getCredentials();
$config = array(
 'provider' => $provider,
 // 中国 (杭州) リージョンのエンドポイントを例として使用します。https://oss-cn-hangzhou.aliyuncs.com に設定します。他のリージョンについては、実際のエンドポイントを指定してください。
 'endpoint'=> 'https://oss-cn-hangzhou.aliyuncs.com'
);
try {
 $ossClient = new OssClient($config);
 var_dump($ossClient);
} catch (OssException $e) {
 print $e->getMessage();
}

OssClient の構成

プロキシサーバー、接続タイムアウト、最大接続数など、OssClient のパラメーターを構成できます。

パラメーター

説明

メソッド

timeout

ソケットレイヤーでのデータ転送のタイムアウト期間。デフォルト値は 5184000 です。単位:秒。

$ossClient->setTimeout(60);

connectTimeout

接続を確立するためのタイムアウト期間。デフォルト値は 10 です。単位:秒。

$ossClient->setConnectTimeout(600);

maxRetries

失敗したリクエストの最大再試行回数。デフォルト値は 3 です。

$ossClient->setMaxTries(5);

useSSL

SSL 証明書検証を有効にするかどうかを指定します。有効な値:

  • true:SSL 証明書検証を有効にします。

  • false (デフォルト):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;
// 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 中国 (杭州) リージョンのエンドポイントを例として使用します。実際のリージョンに基づいてエンドポイントを指定してください。
$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);
    // 接続タイムアウト期間を設定します。
    $ossClient->setConnectTimeout(300);
    // 失敗したリクエストの最大再試行回数を設定します。
    $ossClient->setMaxTries(5);    
    // ソケットレイヤーでのデータ転送のタイムアウト期間を設定します。
    $ossClient->setTimeout(30);
    // SSL 証明書検証を有効にするかどうかを指定します。
    $ossClient->setUseSSL(true);
} catch (OssException $e) {
    print $e->getMessage();
}            

プロキシサーバーの構成

PHP バージョン 5.3 以降は、プロキシサーバーの構成をサポートしています。

<?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;
// このサンプルコードを実行する前に、STS の AccessKey ペア (AccessKey ID と AccessKey Secret) とセキュリティトークンが環境変数に設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// 中国 (杭州) リージョンのエンドポイントを例として使用します。実際のリージョンに基づいてエンドポイントを指定してください。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// プロキシサーバーのアドレスを設定します。例: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();
}