Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Delete objects (PHP SDK V1)

Son Güncelleme:Oct 01, 2026

Bu konu, sürüm oluşturulmuş bir paketten tek bir nesnenin, birden fazla nesnenin veya belirtilen ön eke sahip nesnelerin nasıl silineceğini açıklar.

Dikkat edilmesi gerekenler

  • Bu konuda Çin (Hangzhou) bölgesinin genel uç noktası kullanılır. Aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'e erişmek için dahili uç noktayı kullanın. Desteklenen bölgeler ve uç noktalar hakkında daha fazla bilgi için bkz. Bölgeler ve uç noktalar.

  • Bu konuda, bir OSS uç noktası kullanarak bir OssClient örneğinin nasıl oluşturulacağı gösterilmektedir. Özel etki alanı kullanma veya Security Token Service (STS) kimlik bilgileriyle kimlik doğrulama gibi alternatif yapılandırmalar için bkz. OssClient oluşturun.

  • Bir nesneyi silmek için oss:DeleteObject iznine sahip olmanız gerekir. Daha fazla bilgi için bkz. RAM kullanıcısına özel izinler verin.

Sürüm oluşturulmuş paketler için silme davranışları

  • Geçici silme (sürüm kimliği belirtilmeden):

    Sürüm kimliği belirtmeden bir silme işlemi gerçekleştirirseniz OSS, nesnenin mevcut sürümünü silmez. Bunun yerine OSS, nesne için bir silme işaretçisi ekler. Nesneyi aldığınızda OSS, mevcut sürümün bir silme işaretçisi olduğunu algılar ve 404 Not Found yanıtını döndürür. Yanıt ayrıca x-oss-delete-marker: true üstbilgisini ve yeni silme işaretçisinin x-oss-version-id değerini içerir.

  • Kalıcı silme (sürüm kimliği belirtilerek):

    Bir silme işlemi gerçekleştirip bir sürüm kimliği belirtirseniz OSS, params nesnesinin versionId parametresine göre belirtilen sürümü kalıcı olarak siler. Kimliği "null" olan bir sürümü silmek için params nesnesine params['versionId'] = "null" ayarını ekleyin. OSS, "null" dizesini sürüm kimliği olarak kabul eder ve kimliği "null" olan nesne sürümünü siler.

Tek bir nesneyi silme

Aşağıdaki örneklerde tek bir nesnenin kalıcı veya geçici olarak nasıl silineceği gösterilmektedir.

  • Kalıcı silme

    Aşağıdaki kod, sürüm kimliğini belirterek bir nesnenin nasıl kalıcı olarak silineceğini gösterir:

    <?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;
    
    // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
    $provider = new EnvironmentVariableCredentialsProvider();
    // The endpoint of the China (Hangzhou) region is used in this example. Replace it with your actual endpoint.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    $bucket= "<yourBucketName>";
    // Specify the full path of the object. Do not include the bucket name in the full path. Example: example/test.txt.
    $object = "<yourObjectName>";
    $versionId = "<yourObjectVersionId>";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    
    try{
        // Delete the object with the specified version ID.
        $ossClient->deleteObject($bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId));
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    
    print(__FUNCTION__ . ": OK" . "\n");        
  • Geçici silme

    Aşağıdaki kod, sürüm kimliği belirtmeden bir nesnenin nasıl geçici olarak silineceğini gösterir:

    <?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;
    
    // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
    $provider = new EnvironmentVariableCredentialsProvider();
    // The endpoint of the China (Hangzhou) region is used in this example. Replace it with your actual endpoint.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    $bucket= "<yourBucketName>";
    $object = "<yourObjectName>";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    
    try{
        // Temporarily delete an object without specifying its version ID. This operation adds a delete marker to the object.
        $ret = $ossClient->deleteObject($bucket, $object);
        print("delete marker:" .$ret['x-oss-delete-marker'] ."\n");
        print("version id:" .$ret['x-oss-version-id']);
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    
    print(__FUNCTION__ . ": OK" . "\n");    

Daha fazla bilgi için bkz. DeleteObject.

Birden fazla nesneyi silme

Aşağıdaki örneklerde birden fazla nesnenin kalıcı veya geçici olarak nasıl silineceği gösterilmektedir.

  • Kalıcı silme

    Aşağıdaki kod, sürüm kimliklerini belirterek birden fazla nesnenin nasıl kalıcı olarak silineceğini gösterir:

    <?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;
    use OSS\Model\DeleteObjectInfo;
    
    // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
    $provider = new EnvironmentVariableCredentialsProvider();
    // The endpoint of the China (Hangzhou) region is used in this example. Replace it with your actual endpoint.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    $bucket= "<yourBucketName>";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    
    try{
        // Delete multiple objects with specified version IDs.
        $objects = array(); 
        $objects[] = new DeleteObjectInfo("<yourObject1Name>", "<object1VersionId>");
        $objects[] = new DeleteObjectInfo("<yourObject2Name>", "<object2VersionId>");
        
        $deletedObjectList = $ossClient->deleteObjectVersions($bucket, $objects);
    
        // View the deletion result.
        if (!empty($deletedObjectList)) {
              print("deletedObjectList:\n");
              foreach ($deletedObjectList as $deletedObjectInfo) {
                print($deletedObjectInfo->getKey() . ",");
                print($deletedObjectInfo->getVersionId() . ",");
                print($deletedObjectInfo->getDeleteMarker() . ",");
                print($deletedObjectInfo->getDeleteMarkerVersionId() . "\n");
              }
        }
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    
    print(__FUNCTION__ . ": OK" . "\n");
  • Yumuşak silme

    Aşağıdaki kod, sürüm kimlikleri belirtilmeden birden fazla nesnenin nasıl silineceğini gösterir:

    <?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;
    use OSS\Model\DeleteObjectInfo;
    
    // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
    $provider = new EnvironmentVariableCredentialsProvider();
    // The endpoint of the China (Hangzhou) region is used in this example. Replace it with your actual endpoint.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    $bucket= "<yourBucketName>";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    
    try{
        // Temporarily delete multiple objects without specifying their version IDs. This operation adds a delete marker to each object.
            $objects = array(); 
        $objects[] = new DeleteObjectInfo("<yourObject1Name>");
        $objects[] = new DeleteObjectInfo("<yourObject2Name>");
        
        $deletedObjectList = $ossClient->deleteObjectVersions($bucket, $objects);
    
        // View the deletion result.
        if (!empty($deletedObjectList)) {
              print("deletedObjectList:\n");
              foreach ($deletedObjectList as $deletedObjectInfo) {
                print($deletedObjectInfo->getKey() . ",");
                print($deletedObjectInfo->getVersionId() . ",");
                print($deletedObjectInfo->getDeleteMarker() . ",");
                print($deletedObjectInfo->getDeleteMarkerVersionId() . "\n");
              }
        }
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
    
    print(__FUNCTION__ . ": OK" . "\n");

Daha fazla bilgi için bkz. DeleteMultipleObjects.