GitHub|Panduan Pengembang OSS SDK for PHP 2.0|Rilis SDK
Integrasi cepat
Prasyarat
Memerlukan PHP 7.4+ dan Composer untuk manajemen paket.
Jalankan perintah php -version untuk memeriksa versi PHP. Jika PHP belum terinstal atau versinya lebih lama dari 7.4, unduh dan instal PHP.
Instal SDK
-
Buat direktori proyek dan jalankan perintah berikut untuk menginstal OSS SDK for PHP 2.0 melalui Composer. Gunakan versi terbaru agar kompatibel dengan kode contoh.
mkdir oss-php-example && cd oss-php-example && composer require alibabacloud/oss-v2 -
Impor paket OSS SDK for PHP 2.0:
require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss;
Konfigurasi kredensial akses
Konfigurasikan kredensial akses menggunakan pasangan AccessKey pengguna RAM.
-
Di Konsol RAM, buat pengguna RAM dengan AccessKey Pair permanen. Simpan pasangan AccessKey tersebut dan berikan izin
AliyunOSSFullAccesskepada pengguna RAM. -
Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.
Linux
-
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.bashrc.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc-
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrc -
Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
macOS
-
Jalankan perintah berikut di terminal untuk melihat jenis shell default.
echo $SHELL-
Lakukan langkah-langkah berikut berdasarkan jenis shell default.
Zsh
-
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.zshrc.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrc -
Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.bash_profile.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profile -
Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
-
Windows
CMD
-
Jalankan perintah berikut di jendela Command Prompt.
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"-
Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
-
PowerShell
-
Jalankan perintah berikut di PowerShell.
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)-
Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
Inisialisasi klien
Karena adanya perubahan kebijakan untuk meningkatkan kepatuhan dan keamanan, mulai 20 Maret 2025, pengguna OSS baru harus menggunakan nama domain kustom (CNAME) untuk melakukan operasi API data pada bucket OSS yang berada di wilayah daratan Tiongkok. Titik akhir publik default dibatasi untuk operasi ini. Lihat pengumuman resmi untuk daftar lengkap operasi yang terdampak. Jika Anda mengakses data melalui HTTPS, Anda harus menyambungkan Sertifikat SSL yang valid ke domain kustom Anda. Ini wajib untuk akses Konsol OSS, karena konsol menerapkan HTTPS.
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan wilayah dan titik akhir aktual Anda, misalnyaap-southeast-1.
<?php
/**
* Panduan lengkap konfigurasi klien OSS SDK for PHP 2.0
*
* ===========================================
* Konfigurasi signature V4 dan wilayah
* ===========================================
* • OSS SDK for PHP 2.0 menggunakan algoritma signature V4 secara default.
* • Anda harus menentukan ID wilayah Alibaba Cloud saat menginisialisasi klien.
* • Untuk daftar ID wilayah, lihat Wilayah dan titik akhir.
*
* ===========================================
* Konfigurasi titik akhir
* ===========================================
* • SDK memungkinkan Anda menyesuaikan titik akhir layanan dengan menggunakan parameter endpoint.
* • Jika Anda mengabaikan titik akhir, SDK secara otomatis membuat titik akhir publik dari informasi wilayah.
* • Misalnya, jika wilayahnya adalah '<region-id>', titik akhir yang dibuat adalah 'https://oss-<region-id>.aliyuncs.com'.
*
* ===========================================
* Pemilihan protokol
* ===========================================
* • SDK menggunakan HTTPS secara default untuk membuat titik akhir, yang merupakan protokol yang direkomendasikan.
* • Untuk menggunakan protokol HTTP, sertakan http:// dalam titik akhir.
* • Contoh HTTPS: 'https://oss-<region-id>.aliyuncs.com'
* • Contoh HTTP: 'http://oss-<region-id>.aliyuncs.com'
*/
// Impor autoloader untuk memuat dependensi dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// EnvironmentVariableCredentialsProvider membaca ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);
// Metode 1: Tentukan hanya wilayah (direkomendasikan). SDK secara otomatis membuat titik akhir HTTPS.
$cfg->setRegion(region: "<region-id>");
// // Metode 2: Tentukan wilayah dan titik akhir.
// $cfg->setRegion(region: '<region-id>')->setEndpoint(endpoint: 'https://oss-<region-id>.aliyuncs.com');
// Buat instans klien OSS.
$client = new Oss\Client($cfg);
// Data yang akan diunggah.
$data = 'Hello OSS';
// Buat objek PutObjectRequest untuk mengunggah objek.
$request = new Oss\Models\PutObjectRequest(
bucket: "Your Bucket Name",
key: "Your Object Key",
);
$request->body = Oss\Utils::streamFor($data); // Atur badan permintaan menjadi aliran data.
// Lakukan operasi unggah.
$result = $client->putObject($request);
// Cetak hasil unggah.
printf(
'status code: %s' . PHP_EOL . // Kode status HTTP.
'request id: %s' . PHP_EOL . // ID permintaan.
'etag: %s' . PHP_EOL, // ETag objek.
$result->statusCode,
$result->requestId,
$result->etag
);
Output yang diharapkan saat unggah berhasil:
status code: 200
request id: 687F2BEEDC44E0313527BA07
etag: "F0F18C2C66AE1DD512BDCD4366F76DA3"
Konfigurasi klien
Gunakan nama domain kustom
Untuk mengaktifkan pratinjau file di browser dan akselerasi CDN, ikat nama domain kustom ke bucket Anda.
EnvironmentVariableCredentialsProviderID AccessKeyAccessKey SecretsetUseCnametrue<?php
// Sertakan file autoloader untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Gunakan <code data-tag="inlineCode" id="d5d25f3951tix">EnvironmentVariableCredentialsProviderKontrol timeout
<?php
// Muat dependensi dari file autoload.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Baca ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# Muat konfigurasi SDK default.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion(region: "<region-id>");
# Atur timeout koneksi.
$cfg->setConnectTimeout(connectTimeout: 30);
# Atur timeout baca/tulis.
$cfg->setReadwriteTimeout(readwriteTimeout:30);
// Buat instans klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang dibuat untuk operasi selanjutnya...
Jumlah maksimum percobaan ulang
OSSClient secara default mencoba ulang permintaan yang gagal sebanyak 3 kali.
Untuk skenario konkurensi tinggi atau jaringan tidak stabil, tingkatkan jumlah percobaan ulang dengan setRetryMaxAttempts.
<?php
// Sertakan file autoload untuk memastikan dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);
$cfg->setRegion(region: "<region-id>");
// Atur jumlah maksimum percobaan untuk permintaan HTTP. Nilai default adalah 3.
$cfg->setRetryMaxAttempts(5);
// Buat instans klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang dibuat untuk operasi selanjutnya...
Protokol HTTP/HTTPS
Anda dapat menggunakan setDisableSSL(true) untuk menonaktifkan protokol HTTPS.
<?php
// Impor file autoload untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Buat penyedia kredensial yang membaca ID Kunci Akses dan Rahasia Kunci Akses dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Muat konfigurasi default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);
$cfg->setRegion(region: "<region-id>");
// Nonaktifkan SSL.
$cfg->setDisableSSL(true);
// Buat instans klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien untuk operasi OSS.
Gunakan korutin dalam framework Swoole
Kode berikut memberikan contoh cara membuat klien OSS yang mendukung korutin berdasarkan framework Swoole.
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
use GuzzleHttp\HandlerStack;
use Hyperf\Guzzle\CoroutineHandler;
use function Hyperf\Coroutine\co;
// Konfigurasi klien OSS.
$region = '<region-id>'; // Wilayah OSS.
$bucket = 'bucket-name'; // Bucket tujuan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Muat kredensial dari variabel lingkungan.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion(region: $region); // Atur wilayah.
$cfg->setEndpoint(endpoint: 'http://oss-<region-id>.aliyuncs.com'); // Atur titik akhir.
// Buat klien OSS yang mendukung korutin.
$client = new Oss\Client(config: $cfg, options: ['handler' => HandlerStack::create(handler: new CoroutineHandler())]);
// Tugas korutin 1: Unggah swoole.txt.
co(function () use ($client, $bucket) {
try {
$key = 'swoole.txt'; // Nama objek.
$data = 'Hello OSS'; // Konten objek.
$request = new Oss\Models\PutObjectRequest($bucket, $key); // Buat permintaan unggah.
$request->body = Oss\Utils::streamFor($data); // Atur badan permintaan.
$result = $client->putObject(request: $request); // Lakukan unggah.
echo "Hasil Tugas 1:\n" . var_export($result, true) . "\n"; // Cetak hasil.
} catch (\Exception $e) {
echo "Kesalahan Tugas 1: " . $e->getMessage() . "\n"; // Tangkap pengecualian.
}
});
// Tugas korutin 2: Unggah hyperf.txt.
co(function () use ($client, $bucket) {
try {
$key = 'hyperf.txt'; // Nama objek.
$data = 'Hello OSS'; // Konten objek.
$request = new Oss\Models\PutObjectRequest($bucket, $key); // Buat permintaan unggah.
$request->body = Oss\Utils::streamFor($data); // Atur badan permintaan.
$result = $client->putObject($request); // Lakukan unggah.
echo "Hasil Tugas 2:\n" . var_export($result, true) . "\n"; // Cetak hasil.
} catch (\Exception $e) {
echo "Kesalahan Tugas 2: " . $e->getMessage() . "\n"; // Tangkap pengecualian.
}
});
Gunakan titik akhir internal
Jika aplikasi Anda dideploy pada instans ECS Alibaba Cloud dan perlu sering mengakses sumber daya OSS di wilayah yang sama, Anda dapat menggunakan titik akhir internal untuk mengurangi biaya trafik dan meningkatkan kecepatan akses.
<?php
// Sertakan file autoload untuk memuat dependensi dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Buat penyedia kredensial yang membaca ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);
// Metode 1: Tentukan wilayah dan atur setUseInternalEndpoint ke true.
$cfg->setRegion('<region-id>')->setUseInternalEndpoint(true);
// // Metode 2: Langsung tentukan wilayah dan titik akhir.
// // Tentukan titik akhir internal untuk wilayah tempat bucket berada.
// // Untuk menggunakan protokol HTTP, atur titik akhir ke 'http://oss-<region-id>-internal.aliyuncs.com'.
// $cfg->setRegion('<region-id>')->setEndpoint('https://oss-<region-id>-internal.aliyuncs.com');
// Buat instans klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang dibuat untuk operasi selanjutnya...
Gunakan titik akhir percepatan
<?php
// Muat dependensi proyek.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Baca ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);
// Metode 1: Tentukan wilayah dan atur setUseAccelerateEndpoint ke true.
$cfg->setRegion('<region-id>')->setUseAccelerateEndpoint(true);
// // Metode 2: Langsung tentukan wilayah dan titik akhir.
// // Tentukan titik akhir percepatan regional.
// $cfg->setRegion('<region-id>')->setEndpoint('https://oss-accelerate.aliyuncs.com');
// Buat klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien ini untuk operasi selanjutnya.
Gunakan domain privat
<?php
// Impor file autoload untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Buat penyedia kredensial yang membaca ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider);
// Tentukan wilayah dan atur titik akhir ke domain privat Anda.
$cfg->setRegion('<region-id>')->setEndpoint('https://service.corp.example.com');
// Buat instans klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang dibuat untuk operasi selanjutnya...
Gunakan titik akhir Alibaba Gov Cloud
Kode berikut memberikan contoh cara mengonfigurasi OSSClient menggunakan titik akhir cloud pemerintah.
<?php
// Impor file autoload untuk memastikan dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey dan rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
# Muat konfigurasi SDK default dan atur penyedia kredensial.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider(credentialsProvider: $credentialsProvider); // Atur penyedia kredensial.
// Tentukan wilayah tempat bucket berada. Misalnya, untuk Alibaba Gov Cloud 1 China (Beijing), atur wilayah ke cn-north-2-gov-1.
// Tentukan titik akhir internal wilayah bucket. Misalnya, untuk Alibaba Gov Cloud 1 China (Beijing), atur titik akhir ke 'https://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
// Untuk menggunakan protokol HTTP, atur titik akhir ke 'http://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
$cfg->setRegion('cn-north-2-gov-1')->setEndpoint('https://oss-cn-north-2-gov-1-internal.aliyuncs.com');
// Buat instans klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang dibuat untuk operasi selanjutnya.
Konfigurasi kredensial akses
Pilih metode kredensial berdasarkan kebutuhan autentikasi Anda.
Gunakan pasangan AccessKey pengguna RAM
Inisialisasi penyedia kredensial dengan pasangan AccessKey akun Alibaba Cloud atau pengguna RAM. Cocok untuk lingkungan aman yang memerlukan akses OSS jangka panjang tanpa rotasi kredensial yang sering. Metode ini memerlukan pemeliharaan AccessKey secara manual, yang meningkatkan risiko keamanan.
-
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kebocoran pasangan AccessKey menimbulkan risiko keamanan signifikan. Gunakan pasangan AccessKey pengguna RAM dengan izin minimum yang diperlukan.
-
Untuk informasi lebih lanjut tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat pasangan AccessKey. ID AccessKey dan rahasia AccessKey pengguna RAM hanya ditampilkan saat pasangan AccessKey dibuat. Anda harus segera menyimpannya. Jika Anda lupa pasangan AccessKey, buat yang baru untuk rotasi.
Variabel lingkungan
-
Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.
Linux
-
Jalankan perintah berikut di CLI untuk menambahkan konfigurasi variabel lingkungan ke file
~/.bashrc:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc-
Terapkan perubahan.
source ~/.bashrc -
Periksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
macOS
-
Jalankan perintah berikut di terminal untuk melihat jenis shell default:
echo $SHELL-
Konfigurasikan variabel lingkungan berdasarkan jenis shell default.
Zsh
-
Jalankan perintah berikut untuk menambahkan konfigurasi variabel lingkungan ke file
~/.zshrc:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Terapkan perubahan.
source ~/.zshrc -
Periksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
Jalankan perintah berikut untuk menambahkan konfigurasi variabel lingkungan ke file
~/.bash_profile:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile -
Terapkan perubahan.
source ~/.bash_profile -
Periksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
-
Windows
CMD
-
Jalankan perintah berikut di CMD:
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"-
Periksa apakah variabel lingkungan berlaku:
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
-
PowerShell
-
Jalankan perintah berikut di PowerShell:
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)-
Periksa apakah variabel lingkungan berlaku:
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
-
Mulai ulang lingkungan pengembangan Anda (IDE, terminal, layanan backend) setelah memodifikasi variabel lingkungan untuk memuat nilai baru.
-
Gunakan variabel lingkungan untuk meneruskan informasi kredensial.
<?php // Sertakan file autoload untuk memastikan dependensi dimuat dengan benar. require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; $region = "<region-id>"; // Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey dan rahasia AccessKey dari variabel lingkungan. $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Gunakan konfigurasi SDK default. $cfg = Oss\Config::loadDefault(); $cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial. $cfg->setRegion($region); // Atur wilayah bucket. // Buat instans klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang dibuat untuk operasi selanjutnya...
Kredensial statis
Kode contoh berikut menunjukkan cara menyematkan kredensial akses dengan secara eksplisit mengatur pasangan AccessKey yang akan digunakan.
Jangan menyematkan kredensial akses dalam aplikasi di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.
<?php
// Sertakan file autoload untuk memastikan dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
$region = "<region-id>";
# Buat penyedia kredensial statis dan atur ID AccessKey dan rahasia AccessKey pengguna RAM Anda.
$credentialsProvider = new Oss\Credentials\StaticCredentialsProvider("RAM AccessKey ID","RAM AccessKey Secret");
// Gunakan konfigurasi SDK default.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah bucket.
// Buat instans klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang dibuat untuk operasi selanjutnya...
Gunakan token STS
Jika aplikasi Anda memerlukan akses sementara ke OSS, Anda dapat menginisialisasi penyedia kredensial menggunakan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan token Layanan Keamanan (STS)) yang diperoleh dari STS. Perhatikan bahwa metode ini memerlukan Anda untuk memelihara token STS secara manual, yang meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Selain itu, jika Anda ingin mengakses OSS secara sementara beberapa kali, Anda harus merefresh token STS secara manual.
-
Untuk segera mendapatkan token STS menggunakan OpenAPI, lihat AssumeRole.
-
Untuk mendapatkan token STS menggunakan SDK, lihat Gunakan token STS untuk mengakses OSS.
-
Perhatikan bahwa token STS memiliki waktu kedaluwarsa yang ditentukan saat token dihasilkan. Setelah token kedaluwarsa, token tersebut menjadi tidak valid dan tidak dapat digunakan.
-
Untuk daftar titik akhir layanan STS, lihat Titik akhir STS.
Variabel lingkungan
-
Atur variabel lingkungan menggunakan kredensial identitas sementara.
Mac OS X/Linux/Unix
Peringatan-
Gunakan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan token STS) yang diperoleh dari STS. Jangan gunakan pasangan AccessKey pengguna RAM.
-
Perhatikan bahwa ID AccessKey yang diperoleh dari STS diawali dengan "STS", misalnya, "STS.****************".
export OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID> export OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET> export OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>Windows
Peringatan-
Gunakan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan token STS) yang diperoleh dari STS. Jangan gunakan pasangan AccessKey pengguna RAM.
-
Perhatikan bahwa ID AccessKey yang diperoleh dari STS diawali dengan "STS", misalnya, "STS.****************".
set OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID> set OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET> set OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN> -
-
Teruskan informasi kredensial menggunakan variabel lingkungan.
<?php // Impor file autoload untuk memastikan dependensi dimuat dengan benar. require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; $region = "<region-id>"; // Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey, rahasia AccessKey, dan token keamanan dari variabel lingkungan. $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Gunakan konfigurasi SDK default. $cfg = Oss\Config::loadDefault(); $cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial. $cfg->setRegion($region); // Atur wilayah tempat bucket berada. // Buat instans klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang dibuat untuk operasi selanjutnya...
Kredensial statis
Anda dapat menyematkan kredensial dalam aplikasi Anda dengan secara eksplisit mengatur pasangan AccessKey sementara yang akan digunakan.
Jangan menyematkan kredensial akses dalam aplikasi di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.
<?php
// Impor file autoload untuk memastikan dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
$region = "<region-id>";
# Tentukan ID AccessKey dan rahasia AccessKey sementara Anda. Jangan gunakan pasangan AccessKey akun Alibaba Cloud Anda.
# ID AccessKey dari STS diawali dengan "STS.".
$stsAccessKeyId = 'STS.****************';
$stsAccessKeySecret = 'yourAccessKeySecret';
# Tentukan token keamanan Anda.
$stsSecurityToken = 'yourSecurityToken';
# Buat penyedia kredensial statis dan atur secara eksplisit ID AccessKey sementara, rahasia AccessKey, dan token keamanan.
$credentialsProvider = new Oss\Credentials\StaticCredentialsProvider($stsAccessKeyId, $stsAccessKeySecret, $stsSecurityToken);
// Gunakan konfigurasi SDK default.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
// Buat instans klien OSS.
$client = new Oss\Client($cfg);
// Gunakan klien yang dibuat untuk operasi selanjutnya...
Gunakan ARN peran RAM
Untuk akses lintas akun atau otorisasi delegasi, inisialisasi penyedia kredensial dengan ARN peran RAM. Alat Credentials secara otomatis memperoleh dan merefresh token STS dengan memanggil AssumeRole. Anda dapat secara opsional menetapkan parameter policy untuk membatasi izin peran tersebut.
-
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kebocoran pasangan AccessKey menimbulkan risiko keamanan signifikan. Gunakan pasangan AccessKey pengguna RAM dengan izin minimum yang diperlukan.
-
Untuk informasi lebih lanjut tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat pasangan AccessKey. ID AccessKey dan rahasia AccessKey pengguna RAM hanya ditampilkan saat pasangan AccessKey dibuat. Anda harus segera menyimpannya. Jika Anda lupa pasangan AccessKey, buat yang baru untuk rotasi.
-
Untuk informasi lebih lanjut tentang cara memperoleh ARN peran RAM, lihat CreateRole.
-
Tambahkan pustaka kredensial Alibaba Cloud credentials-php.
composer require alibabacloud/credentials -
Konfigurasikan pasangan AccessKey dan ARN peran RAM sebagai kredensial akses.
<?php // Sertakan file autoload untuk memastikan dependensi dimuat dengan benar. require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Credentials\Credential; // Buat objek konfigurasi untuk menentukan jenis kredensial dan informasi terkait. $config = new Credential\Config([ // Tentukan jenis kredensial. Dalam contoh ini, digunakan jenis ARN peran RAM. 'type' => 'ram_role_arn', // ID AccessKey akun Alibaba Cloud. 'accessKeyId' => 'AccessKeyId', // Rahasia AccessKey akun Alibaba Cloud. 'accessKeySecret' => 'AccessKeySecret', // ARN peran RAM. Contoh: acs:ram::USER_Id:role/ROLE_NAME. 'roleArn' => 'RoleArn', // Nama sesi peran, digunakan untuk mengidentifikasi sesi. 'roleSessionName' => 'yourRoleSessionName', // Opsional. Kebijakan yang digunakan untuk membatasi izin token STS. 'policy' => 'Policy', ]); // Inisialisasi instans kredensial dengan objek konfigurasi. $credential = new Credential($config); // Muat konfigurasi SDK default. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial untuk menghasilkan kredensial secara dinamis dengan fungsi callback. $cfg->setCredentialsProvider(new Oss\Credentials\CredentialsProviderFunc(function () use ($credential) { // Peroleh kredensial sementara (token STS). $cred = $credential->getCredential(); // Kembalikan objek kredensial yang berisi ID AccessKey, rahasia AccessKey, dan token keamanan. return new Oss\Credentials\Credentials( accessKeyId: $cred->getAccessKeyId(), // ID AccessKey sementara. accessKeySecret: $cred->getAccessKeySecret(), // Rahasia AccessKey sementara. securityToken: $cred->getSecurityToken() // Token keamanan (token STS). ); })); $region = '<region-id>'; $cfg->setRegion($region); // Buat instans klien OSS. $client = new Oss\Client($cfg); // Gunakan klien untuk operasi selanjutnya...
Gunakan peran RAM instans
Untuk aplikasi pada instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes, gunakan peran RAM instans. Metode ini secara otomatis merefresh token STS dalam instans Container Service for Kubernetes Anda tanpa memerlukan pasangan AccessKey. CreateRole.
-
Tambahkan pustaka kredensial Alibaba Cloud credentials-php.
composer require alibabacloud/credentials -
Konfigurasikan peran RAM instans sebagai kredensial akses.
<?php // Impor file autoload untuk memastikan dependensi dimuat dengan benar. require_once 'vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Credentials\Credential; // Buat objek konfigurasi untuk jenis kredensial. $config = new Credential\Config([ // Atur jenis kredensial. Untuk peran RAM instans, nilai ini harus 'ecs_ram_role'. 'type' => 'ecs_ram_role', // Nama peran RAM yang dilampirkan ke instans. 'roleName' => "<role_name>", // Ganti dengan nama peran RAM aktual Anda. ]); // Inisialisasi instans kredensial. $credential = new Credential($config); // Muat konfigurasi OSS default. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial ke fungsi yang menghasilkan kredensial secara dinamis. $cfg->setCredentialsProvider(new Oss\Credentials\CredentialsProviderFunc(function () use ($credential) { // Dapatkan token STS sementara. $cred = $credential->getCredential(); // Kembalikan objek kredensial baru dengan ID AccessKey, rahasia AccessKey, dan token keamanan. return new Oss\Credentials\Credentials( accessKeyId: $cred->getAccessKeyId(), // ID AccessKey sementara accessKeySecret: $cred->getAccessKeySecret(), // Rahasia AccessKey sementara securityToken: $cred->getSecurityToken() // Token keamanan ); })); $region = '<region-id>'; $cfg->setRegion($region); // Buat instans klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang dibuat untuk operasi selanjutnya...
Gunakan ARN peran OIDC
Untuk aplikasi tidak tepercaya dalam pod Container Service for Kubernetes (ACK) yang tidak boleh mengakses peran RAM instans node pekerja, gunakan RAM Roles for Service Account (RRSA). ACK memasang file token OIDC per pod dan menyuntikkan konfigurasi ke variabel lingkungan. Alat Credentials membaca variabel ini dan memanggil AssumeRoleWithOIDC untuk memperoleh token STS dengan izin minimal. Tidak diperlukan pasangan AccessKey. Gunakan RRSA untuk mengonfigurasi izin RAM untuk ServiceAccount dan mengisolasi izin pod.
-
Tambahkan pustaka kredensial Alibaba Cloud credentials-php.
composer require alibabacloud/credentials
-
Konfigurasikan ARN peran OIDC sebagai kredensial akses.
<?php // Muat dependensi dari file autoload. require_once 'vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Credentials\Credential; // Buat objek konfigurasi untuk menentukan jenis kredensial dan informasi terkait. $config = new Credential\Config([ // Tentukan jenis kredensial. Dalam contoh ini, digunakan jenis oidc_role_arn. 'type' => 'oidc_role_arn', // Tentukan ARN penyedia identitas OIDC. Anda juga dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN. 'oidcProviderArn' => '<oidc_provider_arn>', // Ganti dengan ARN penyedia identitas OIDC aktual. // Tentukan path file token OIDC. Anda juga dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE. 'oidcTokenFilePath' => '<oidc_token_file_path>', // Ganti dengan path file token OIDC aktual. // Tentukan ARN peran RAM. Anda juga dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN. 'roleArn' => '<role_arn>', // Ganti dengan ARN peran RAM aktual. // Tentukan nama sesi peran. Anda juga dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME. 'roleSessionName' => '<role_session_name>', // Ganti dengan nama sesi peran aktual. // Opsional: Tentukan kebijakan izin untuk membatasi lebih lanjut izin peran RAM. // Contoh kebijakan: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"} 'policy' => '', // Untuk membatasi izin, ganti ini dengan string JSON kebijakan aktual. // Opsional: Tentukan periode validitas sesi dalam detik. Nilai default adalah 3.600 detik. 'roleSessionExpiration' => 3600, // Untuk menyesuaikan periode validitas, ubah nilai ini. ]); // Inisialisasi instans kredensial menggunakan objek konfigurasi. $credential = new Credential($config); // Muat konfigurasi default dan peroleh objek konfigurasi OSS. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial yang menggunakan fungsi callback untuk menghasilkan kredensial secara dinamis. $cfg->setCredentialsProvider(new Oss\Credentials\CredentialsProviderFunc(function () use ($credential) { // Peroleh kredensial sementara (token STS). $cred = $credential->getCredential(); // Kembalikan objek kredensial yang berisi ID AccessKey, rahasia AccessKey, dan token keamanan. return new Oss\Credentials\Credentials( accessKeyId: $cred->getAccessKeyId(), // ID AccessKey sementara. accessKeySecret: $cred->getAccessKeySecret(), // Rahasia AccessKey sementara. securityToken: $cred->getSecurityToken() // Token keamanan (token STS). ); })); $region = '<region-id>'; $cfg->setRegion($region); // Buat instans klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang dibuat untuk operasi selanjutnya...
Gunakan kredensial akses kustom
Jika metode konfigurasi kredensial di atas tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan metode untuk memperoleh kredensial. SDK mendukung berbagai metode implementasi.
-
Gunakan Oss\Credentials\CredentialsProviderFunc
Oss\Credentials\CredentialsProviderFunc adalah pembungkus kemudahan penggunaan untuk Oss\Credentials\CredentialsProvider.
<?php // Impor file autoload untuk memastikan dependensi dimuat dengan benar. require_once 'vendor/autoload.php'; // Impor namespace yang diperlukan. use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Oss\V2\Credentials\Credentials; // Buat penyedia kredensial yang menghasilkan kredensial secara dinamis menggunakan fungsi anonim. $provider = new Oss\Credentials\CredentialsProviderFunc( function () { // Kembalikan kredensial jangka panjang, yang hanya berisi ID AccessKey dan rahasia AccessKey. return new Credentials( accessKeyId: 'id', // Ganti dengan ID AccessKey RAM aktual. accessKeySecret: 'secret' // Ganti dengan rahasia AccessKey RAM aktual. ); // Untuk mengembalikan kredensial sementara, yang mencakup token keamanan, hapus komentar kode berikut dan ganti nilainya. /* return new Credentials( accessKeyId: 'id', // Ganti dengan ID kredensial sementara STS aktual. accessKeySecret: 'secret', // Ganti dengan rahasia kredensial sementara STS aktual. securityToken: 'token' // Ganti dengan token keamanan STS aktual. ); */ } ); // Muat konfigurasi default dan peroleh objek konfigurasi OSS. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial ke penyedia yang dihasilkan secara dinamis. $cfg->setCredentialsProvider($provider); $region = '<region-id>'; $cfg->setRegion($region); // Buat instans klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang dibuat untuk operasi selanjutnya... -
Implementasikan Oss\Credentials\CredentialsProvider
<?php // Impor file autoload untuk memastikan dependensi dimuat dengan benar. require_once 'vendor/autoload.php'; // Impor namespace yang diperlukan. use AlibabaCloud\Oss\V2 as Oss; use AlibabaCloud\Oss\V2\Credentials\Credentials; // Kelas penyedia kredensial kustom yang mengimplementasikan antarmuka CredentialsProvider. class CustomerCredentialsProvider implements Oss\Credentials\CredentialsProvider { /** * Mendapatkan objek kredensial. * * @return Credentials Mengembalikan objek kredensial. */ public function getCredentials(): Credentials { // Kembalikan kredensial jangka panjang, yang hanya berisi ID AccessKey dan rahasia AccessKey. return new Credentials( accessKeyId: 'id', // Ganti dengan ID AccessKey RAM aktual. accessKeySecret: 'secret' // Ganti dengan rahasia AccessKey RAM aktual. ); // Untuk mengembalikan kredensial sementara, yang mencakup token keamanan, hapus komentar kode berikut dan ganti nilainya. /* return new Credentials( accessKeyId: 'id', // Ganti dengan ID kredensial sementara STS aktual. accessKeySecret: 'secret', // Ganti dengan rahasia kredensial sementara STS aktual. securityToken: 'token' // Ganti dengan token keamanan STS aktual. ); */ } } // Instansiasi penyedia kredensial kustom. $provider = new CustomerCredentialsProvider(); // Muat konfigurasi default dan peroleh objek konfigurasi OSS. $cfg = Oss\Config::loadDefault(); // Atur penyedia kredensial ke instans penyedia kustom. $cfg->setCredentialsProvider($provider); $region = '<region-id>'; $cfg->setRegion($region); // Buat instans klien OSS. $client = new Oss\Client($cfg); // Gunakan klien yang dibuat untuk operasi selanjutnya...
Pemecahan masalah kesalahan
Saat terjadi kesalahan, OSS mengembalikan kode status HTTP, pesan, ID permintaan, dan kode kesalahan (EC). Gunakan EC untuk mendiagnosis masalah.
-
Sebagai contoh, Anda menggunakan kode berikut untuk mengunduh file yang tidak ada.
<?php // Impor file autoload untuk memastikan dependensi dimuat dengan benar. require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; // Definisikan deskripsi untuk argumen baris perintah. $optsdesc = [ "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada (wajib). "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 (wajib). "key" => ['help' => 'Nama objek', 'required' => True], // Nama objek (wajib). ]; // Konversi deskripsi parameter ke format opsi panjang yang diperlukan oleh getopt. // Tanda titik dua ":" setelah setiap parameter menunjukkan bahwa parameter memerlukan nilai. $longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc)); // Uraikan argumen baris perintah. $options = getopt("", $longopts); // Verifikasi bahwa semua parameter wajib tersedia. foreach ($optsdesc as $key => $value) { if ($value['required'] === True && empty($options[$key])) { $help = $value['help']; // Dapatkan informasi bantuan untuk parameter. echo "Kesalahan: argumen berikut wajib: --$key, $help" . PHP_EOL; exit(1); // Keluar dari program jika parameter wajib hilang. } } // Ekstrak nilai dari parameter yang diuraikan. $region = $options["region"]; // Wilayah tempat bucket berada. $bucket = $options["bucket"]; // Nama bucket. $key = $options["key"]; // Nama objek. // Muat kredensial dari variabel lingkungan. // Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey dan rahasia AccessKey dari variabel lingkungan. $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // Gunakan konfigurasi SDK default. $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 disediakan, atur titik akhir. } // Buat instans klien OSS. $client = new Oss\Client($cfg); // Buat objek GetObjectRequest untuk mendapatkan konten objek tertentu. $request = new Oss\Models\GetObjectRequest(bucket: $bucket, key: $key); // Lakukan operasi get object. $result = $client->getObject($request); // Definisikan path file lokal untuk menyimpan konten. $localFilePath = './test/file.txt'; // Ganti dengan path file aktual. // Tulis konten ke file lokal. file_put_contents( $localFilePath, $result->body->getContents()); // Cetak hasil. // Output kode status HTTP, ID permintaan, dan konten objek. printf( 'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan keberhasilan. 'request id:' . $result->requestId . PHP_EOL // ID permintaan, digunakan untuk debugging atau pelacakan permintaan. ); -
Contoh respons kesalahan. 'EC': '0026-00000001' mengidentifikasi penyebab kesalahan spesifik.
teyimui@xxx 2051 get_object % php get_object_to_file.php region cn-hangzhou bucket xxx PHP Fatal error: Uncaught AlibabaCloud\Oss\V2\Exception\ServiceException: Error returned by Service. Http Status Code: 404 Error Code: NoSuchKey Request Id: 687F3B562C1E9331312B1F00 Message: The specified key does not exist. EC: 0026-00000001 Timestamp: Tue, 22 Jul 2025 07:18:46 GMT Request Endpoint: GET https://xxx.oss-cn-hangzhou.aliyuncs.com/put-php.txt in xxx -
Diagnosis kesalahan menggunakan EC dari respons:
-
Di kotak pencarian, masukkan EC, misalnya, 0026-00000001. Klik Diagnose.
-
Halaman hasil menunjukkan deskripsi masalah, penyebab, dan solusi.
Kode contoh
Tabel berikut mencantumkan kode contoh untuk operasi umum.