Todos os produtos
Search
Central de documentação

Object Storage Service:Excluir objetos (PHP SDK V1)

Última atualização: Jul 03, 2026

Exclua um ou vários objetos de um bucket com versionamento ativado usando o OSS PHP SDK V1.

Pré-requisitos

Antes de começar, verifique se você tem:

Como funciona

A exclusão de um objeto em um bucket com versionamento comporta-se de maneira diferente dependendo da especificação do ID de versão.

Exclusão temporária (sem ID de versão especificado)

O OSS não exclui a versão atual do objeto. Em vez disso, insere um marcador de exclusão, que se torna a nova versão atual. Qualquer requisição GET subsequente retorna 404 Not Found, além do cabeçalho x-oss-delete-marker: true e do x-oss-version-id do novo marcador de exclusão.

Exclusão permanente (com ID de versão especificado)

O OSS exclui permanentemente a versão especificada. Passe o ID de versão usando a constante OssClient::OSS_VERSION_ID no array de opções. Para excluir uma versão cujo ID é a string "null", passe OssClient::OSS_VERSION_ID => "null" — o OSS trata a string "null" como o ID de versão e remove essa versão.

Aviso

A exclusão permanente não pode ser desfeita. Após a exclusão de uma versão específica do objeto, não é possível recuperá-la.

Nota

Para excluir uma versão com o ID "null", defina o ID de versão como a string "null" na sua requisição. O OSS trata esse valor como um ID de versão literal, não como ausência de valor.

Excluir um único objeto

Ambos os exemplos usam $ossClient->deleteObject(). Todos os exemplos leem credenciais de variáveis de ambiente e usam a Signature Version 4.

Exclusão permanente

Exclua um objeto permanentemente especificando seu ID de versão:

<?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;

// Load credentials from environment variables.
// Set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET before running this code.
$provider = new EnvironmentVariableCredentialsProvider();
// Replace with your actual endpoint.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket = "<your-bucket-name>";
// Full object path, not including the bucket name. Example: example/test.txt
$object = "<your-object-name>";
$versionId = "<your-object-version-id>";

$config = array(
    "provider"         => $provider,
    "endpoint"         => $endpoint,
    "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
    "region"           => "cn-hangzhou"
);
$ossClient = new OssClient($config);

try {
    // Permanently delete the specified object version.
    $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");

Exclusão temporária

Exclua temporariamente um objeto sem especificar um ID de versão. O OSS insere um marcador de exclusão e retorna seu ID de versão:

<?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;

// Load credentials from environment variables.
// Set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET before running this code.
$provider = new EnvironmentVariableCredentialsProvider();
// Replace with your actual endpoint.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket = "<your-bucket-name>";
$object = "<your-object-name>";

$config = array(
    "provider"         => $provider,
    "endpoint"         => $endpoint,
    "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
    "region"           => "cn-hangzhou"
);
$ossClient = new OssClient($config);

try {
    // Soft-delete the object. OSS inserts a delete marker instead of removing the object.
    $ret = $ossClient->deleteObject($bucket, $object);
    print("delete marker: " . $ret['x-oss-delete-marker'] . "\n");
    print("version ID: " . $ret['x-oss-version-id'] . "\n");
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}

print(__FUNCTION__ . ": OK\n");

Para obter a especificação completa da API, consulte DeleteObject.

Excluir vários objetos

Ambos os exemplos usam $ossClient->deleteObjectVersions() com um array de instâncias DeleteObjectInfo. Cada instância corresponde a uma versão de objeto a ser excluída.

Exclusão permanente

Exclua permanentemente vários objetos especificando seus IDs de versão:

<?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;

// Load credentials from environment variables.
// Set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET before running this code.
$provider = new EnvironmentVariableCredentialsProvider();
// Replace with your actual endpoint.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket = "<your-bucket-name>";

$config = array(
    "provider"         => $provider,
    "endpoint"         => $endpoint,
    "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
    "region"           => "cn-hangzhou"
);
$ossClient = new OssClient($config);

try {
    // Specify objects and their version IDs to permanently delete.
    $objects   = array();
    $objects[] = new DeleteObjectInfo("<your-object1-name>", "<object1-version-id>");
    $objects[] = new DeleteObjectInfo("<your-object2-name>", "<object2-version-id>");

    $deletedObjectList = $ossClient->deleteObjectVersions($bucket, $objects);

    // Print the deletion result.
    if (!empty($deletedObjectList)) {
        print("Deleted objects:\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");

Exclusão temporária

Exclua temporariamente vários objetos sem especificar IDs de versão. O OSS insere um marcador de exclusão para cada objeto:

<?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;

// Load credentials from environment variables.
// Set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET before running this code.
$provider = new EnvironmentVariableCredentialsProvider();
// Replace with your actual endpoint.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket = "<your-bucket-name>";

$config = array(
    "provider"         => $provider,
    "endpoint"         => $endpoint,
    "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
    "region"           => "cn-hangzhou"
);
$ossClient = new OssClient($config);

try {
    // Omit version IDs to soft-delete. OSS inserts a delete marker for each object.
    $objects   = array();
    $objects[] = new DeleteObjectInfo("<your-object1-name>");
    $objects[] = new DeleteObjectInfo("<your-object2-name>");

    $deletedObjectList = $ossClient->deleteObjectVersions($bucket, $objects);

    // Print the deletion result.
    if (!empty($deletedObjectList)) {
        print("Deleted objects:\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");

Para obter a especificação completa da API, consulte DeleteMultipleObjects.

Observações de uso

  • Os exemplos usam o endpoint público da região China (Hangzhou) (oss-cn-hangzhou.aliyuncs.com). Para acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, use o endpoint interno. Para obter a lista completa de regiões e endpoints, consulte Regiões e endpoints.

  • Para usar um domínio personalizado ou credenciais do Security Token Service (STS), consulte Crie um OssClient.