全部产品
Search
文档中心

Object Storage Service:Atur Pengendalian Versi (OSS SDK untuk PHP V2)

更新时间:Nov 09, 2025

Pengaturan pengendalian versi bucket berlaku untuk semua objek dalam bucket. Saat Anda mengaktifkan pengendalian versi untuk bucket, Anda dapat memulihkan versi sebelumnya dari objek di bucket jika Anda secara tidak sengaja menimpa atau menghapus objek tersebut.

Pertimbangan

  • Kode contoh dalam topik ini menggunakan Wilayah China (Hangzhou) (ID: cn-hangzhou) sebagai contoh. Kode ini menggunakan titik akhir publik secara default. Jika Anda ingin mengakses OSS dari produk Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir OSS.

  • Untuk mengatur status pengendalian versi bucket, Anda harus memiliki izin oss:PutBucketVersioning. Untuk mengambil status pengendalian versi bucket, Anda harus memiliki izin oss:GetBucketVersioning. Untuk informasi lebih lanjut, lihat Berikan Izin Kustom kepada Pengguna RAM.

Kode Contoh

Atur status pengendalian versi bucket

Gunakan kode berikut untuk mengatur status pengendalian versi bucket menjadi Diaktifkan.

<?php

// Impor file autoloader untuk memastikan bahwa library dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. (Diperlukan)
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir. (Opsional)
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. (Diperlukan)
];

// Ubah deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tambahkan tanda titik dua ":" setelah setiap argumen untuk menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Parsing argumen baris perintah.
$options = getopt("", $longopts);

// Verifikasi bahwa argumen yang diperlukan telah diberikan.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // Dapatkan informasi bantuan untuk argumen.
        echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
        exit(1); // Jika argumen yang diperlukan tidak ada, keluar dari program.
    }
}

// Ekstrak nilai dari argumen yang telah diparsing.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Jika titik akhir diberikan, atur titik akhir.
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Buat objek PutBucketVersioningRequest untuk mengaktifkan fitur pengendalian versi pada bucket.
$request = new Oss\Models\PutBucketVersioningRequest(
    bucket: $bucket,
    versioningConfiguration: new Oss\Models\VersioningConfiguration(
        status: 'Enabled' // Atur status pengendalian versi menjadi "Diaktifkan".
    )
);

// Jalankan operasi untuk mengaktifkan pengendalian versi pada bucket.
$result = $client->putBucketVersioning($request);

// Cetak hasil dari pengaktifan pengendalian versi.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan sukses.
    'request id:' . $result->requestId . PHP_EOL     // ID permintaan, yang digunakan untuk debug atau jejak permintaan.
);

Dapatkan informasi status pengendalian versi bucket

Gunakan kode berikut untuk mendapatkan informasi status pengendalian versi bucket.

<?php

// Sertakan file autoloader untuk memastikan bahwa library dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi untuk argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True],
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False],
    "bucket" => ['help' => 'Nama bucket', 'required' => True],
];

// Ubah deskripsi argumen ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Parsing argumen baris perintah.
$options = getopt("", $longopts);

// Verifikasi bahwa semua argumen yang diperlukan telah diberikan.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // Dapatkan informasi bantuan untuk argumen.
        echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
        exit(1); // Jika argumen yang diperlukan tidak ada, keluar dari program.
    }
}

// Ekstrak nilai dari argumen yang telah diparsed.
$region = $options["region"];
$bucket = $options["bucket"];

// Muat kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Jika titik akhir diberikan, atur titik akhir.
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Buat objek GetBucketVersioningRequest untuk mengambil status pengendalian versi bucket.
$request = new Oss\Models\GetBucketVersioningRequest(
    bucket: $bucket
);

// Jalankan operasi untuk mengambil status pengendalian versi bucket.
$result = $client->getBucketVersioning($request);

// Cetak hasil dari pengambilan status pengendalian versi.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan sukses.
    'request id:' . $result->requestId . PHP_EOL .   // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
    'version status:' . $result->versioningConfiguration->status . PHP_EOL // Status pengendalian versi, seperti Diaktifkan, Ditangguhkan, atau string kosong.
);