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

Object Storage Service:ファイルの名称変更 (PHP SDK V1)

最終更新日:Nov 30, 2025

OSS は、オブジェクトの直接的な名前変更をサポートしていません。同じバケット内のオブジェクトの名前を変更するには、CopyObject 操作を呼び出してソースオブジェクトを宛先オブジェクトにコピーします。その後、DeleteObject 操作を呼び出してソースオブジェクトを削除します。

注意事項

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名またはセキュリティトークンサービス (STS) を使用して OSSClient インスタンスを作成する場合は、「OssClient の作成」をご参照ください。

サンプルコード

次のサンプルコードは、examplebucket バケット内のオブジェクト srcobject.txt の名前を destobject.txt に変更する方法を示しています。

<?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";
// バケット名を指定します。例:examplebucket。
$bucket= "examplebucket";
// ソースオブジェクトの完全なパスを指定します。パスにバケット名を含めることはできません。例:srcobject.txt。
$fromObject = "srcobject.txt";
// 宛先オブジェクトの完全なパスを指定します。パスにバケット名を含めることはできません。例:destobject.txt。
$toObject = 'destobject.txt';

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
    // 同じバケット内で srcobject.txt オブジェクトを destobject.txt にコピーします。
    $ossClient->copyObject($bucket, $fromObject,$bucket, $toObject);
    // srcobject.txt オブジェクトを削除します。
    $ossClient->deleteObject($bucket, $fromObject);
} catch (OssException $e) {
    printf($e->getMessage() . "\n");
    return;
}
print("Object ".$fromObject ." Rename complete" . PHP_EOL);
説明

OSS はフォルダーの直接的な名前変更もサポートしていません。フォルダーの名前を変更するには、同じ方法でそのサブディレクトリとオブジェクトの名前を 1 つずつ変更する必要があります。

関連ドキュメント

ファイルの名称変更に使用される API 操作の詳細については、「CopyObject」および「DeleteObject」をご参照ください。