OSS PHP SDK 初學

其實還蠻簡單的,比較麻煩的反而是在產生 access key 這個部份,只能說 alibaba 的 document 有點難找

安裝與簡單的範例

安裝 sdk 可以直接到 https://github.com/aliyun/aliyun-oss-php-sdk下載。我自己是用 composer 裝完,可以在工作目錄的 vendor/aliyuncs/oss-sdk-php/ 底下找到 autoload.php 加到 php file 當中。開始使用的時候基本上只要 use OSSOssClient 與 OSSCoreOssException 這兩個 class 就差不多通吃了,下面這段是從 samples/ 目錄裡面的範例做修改的,可以作為參考。

<?php
require_once '../vendor/aliyuncs/oss-sdk-php/autoload.php';
use OSSOssClient;
use OSSCoreOssException;

$accessKeyId = "YOUR_ACCESS_KEY_ID";
$accessKeySecret = "YOUR_ACCESS_KEY_SECRET";
$endpoint = "oss-cn-hongkong.aliyuncs.com";
$bucket = "YOUR_BUCKET_NAME";

try {
  /* build connection */
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

  
    /* download file */
    $localfile = "localfilename.zip";
    $options = array(
        OssClient::OSS_FILE_DOWNLOAD => $localfile,
    );
  $ossClient->getObject($bucket, "PATH/TO/THE/TARGET/FILE", $options);


  print "download finish";




    /* list folders and files */
  $prefix = 'REMOTE/PATH/';
    $delimiter = '/';
    $nextMarker = '';
    $maxkeys = 30;

    while (true) {
        $options = array(
            // 'delimiter' => $delimiter,
            'prefix' => $prefix,
            // 'max-keys' => $maxkeys,
            // 'marker' => $nextMarker,
        );
        var_dump($options);
        try {
            $listObjectInfo = $ossClient->listObjects($bucket, $options);
        } catch (OssException $e) {
            printf(__FUNCTION__ . ": FAILEDn");
            printf($e->getMessage() . "n");
            return;
        }

        $nextMarker = $listObjectInfo->getNextMarker();
        $listObject = $listObjectInfo->getObjectList();
        $listPrefix = $listObjectInfo->getPrefixList();

        foreach ($listObject as $key => $value) {
        	var_dump($key);
        	var_dump($value);
        }
        // var_dump(($listObject));
        // var_dump(($listPrefix));
        if ($nextMarker === '') {
            break;
        }
    }
} catch (OssException $e) {
    print $e->getMessage();
}

產生accessKeyId 與 accessKeySecret

在使用 OSS 服務的時候,本來就會有 access key id 與對應的 access key secret,不過預設的權限過大,所以建議產生新的。步驟可以參考下面幾張圖,從 RAM (Resource Access Management) 服務來新增使用者,並給予 OSS read only 的權限。

oss_ram_01

oss_ram_02

oss_ram_03

oss_ram_05

oss_ram_04

完成之後就可以取得/下載 access key id 與 access key secret在程式內使用了。