全部产品
Search
文档中心

Object Storage Service:Kelola tautan simbolik (PHP SDK V2)

更新时间:Nov 09, 2025

Fitur tautan simbolik memberikan akses yang nyaman ke file-file yang sering digunakan dalam sebuah bucket. Setelah membuat tautan simbolik, Anda dapat menggunakannya seperti pintasan di Windows untuk mengakses file. Topik ini menjelaskan cara membuat dan mendapatkan tautan simbolik menggunakan OSS PHP SDK.

Pertimbangan

  • Kode contoh dalam topik ini menggunakan Wilayah China (Hangzhou) (cn-hangzhou) dan titik akhir publiknya sebagai contoh. Untuk mengakses OSS dari layanan 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 membuat tautan simbolik, Anda harus memiliki izin oss:PutObject. Untuk mendapatkan tautan simbolik, Anda harus memiliki izin oss:GetObject. Untuk informasi lebih lanjut, lihat Berikan Izin Kustom kepada Pengguna RAM.

Kode contoh

Buat tautan simbolik

Anda dapat menggunakan kode berikut untuk membuat tautan simbolik.

<?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)
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama tautan simbolik. (Diperlukan)
    "symlink" => ['help' => 'Nama objek symlink', 'required' => True], // Nama objek target untuk tautan simbolik. (Diperlukan)
];

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

// Parse 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 diparse.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama tautan simbolik.
$symlink = $options["symlink"]; // Nama objek target untuk tautan simbolik.

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

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

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

// Buat objek PutSymlinkRequest untuk membuat tautan simbolik.
$request = new Oss\Models\PutSymlinkRequest(
    bucket: $bucket,
    key: $key,  // Nama tautan simbolik.
    target: $symlink ,// Nama objek target untuk tautan simbolik.
);

// Jalankan operasi untuk membuat tautan simbolik.
$result = $client->putSymlink($request);

// Cetak hasil pembuatan tautan simbolik.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan bahwa operasi berhasil.
    'request id:' . $result->requestId . PHP_EOL .   // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
    'result:' . var_export($result, true) . PHP_EOL  // Hasil rinci dari pembuatan tautan simbolik.
);

Dapatkan tautan simbolik

Anda dapat menggunakan kode berikut untuk mendapatkan tautan simbolik dan nama file target yang ditunjuk oleh tautan simbolik.

<?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)
    "key" => ['help' => 'Nama objek', 'required' => True], // Nama tautan simbolik. (Diperlukan)
];

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

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

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

// Ekstrak nilai dari parameter yang telah diparse.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama tautan simbolik.

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

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

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

// Buat objek GetSymlinkRequest untuk mendapatkan objek target dari tautan simbolik.
$request = new Oss\Models\GetSymlinkRequest(
    bucket: $bucket,
    key: $key
);

// Jalankan operasi untuk mendapatkan tautan simbolik.
$result = $client->getSymlink($request);

// Cetak hasil dari mendapatkan tautan simbolik.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan permintaan berhasil.
    'request id:' . $result->requestId . PHP_EOL .   // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
    'result:' . var_export($result, true) . PHP_EOL  // Hasil rinci dari tautan simbolik yang diperoleh.
);

Referensi

  • Untuk kode contoh tentang pembuatan tautan simbolik, lihat Contoh Github.

  • Untuk kode contoh tentang mendapatkan tautan simbolik, lihat Contoh Github.