All Products
Search
Document Center

Object Storage Service:Global Block Public Access for OSS (PHP SDK V2)

Last Updated:Aug 05, 2025

This topic describes how to use PHP SDK V2 to enable global Block Public Access for OSS, obtain its configuration information, and delete its configuration information.

Precautions

  • The sample code in this topic uses the China (Hangzhou) region (cn-hangzhou) as an example. By default, the public endpoint is used. If you want to access OSS from other Alibaba Cloud services within the same region, use the internal endpoint. For more information about OSS regions and endpoints, see OSS regions and endpoints.

Sample code

Enable global Block Public Access for OSS

You can use the following code to enable global Block Public Access.

<?php

// Import the autoloader file to load dependency libraries.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Define the description of command line arguments.
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // The region is a required argument. It specifies the region where the bucket is located.
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // The endpoint is an optional argument. It specifies the domain name that other services can use to access OSS.
];

// Generate a list of long options to parse command line arguments.
$longopts = \array_map(function ($key) {
    return "$key:"; // A colon (:) is added after each parameter to indicate that a value is required.
}, array_keys($optsdesc));

// Parse command line arguments.
$options = getopt("", $longopts);

// Check whether required arguments are missing.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Prompt the user that a required argument is missing.
        exit(1);
    }
}

// Obtain the values of command line arguments.
$region = $options["region"]; // The region where the bucket is located.

// Use environment variables to load credential information, including AccessKeyId and AccessKeySecret.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Use the default configurations of the SDK.
$cfg = Oss\Config::loadDefault();

// Set the credential provider.
$cfg->setCredentialsProvider($credentialsProvider);

// Set the region.
$cfg->setRegion($region);

// If an endpoint is provided, set the endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Create an OSS client instance.
$client = new Oss\Client($cfg);

// Build a PutPublicAccessBlock request to set the Block Public Access configuration.
$request = new Oss\Models\PutPublicAccessBlockRequest(
    publicAccessBlockConfiguration: new Oss\Models\PublicAccessBlockConfiguration(blockPublicAccess: true) // Configure to block public access.
);

// Call the putPublicAccessBlock method to set the Block Public Access configuration and accept the returned result.
$result = $client->putPublicAccessBlock($request);

// Print the returned result, including the status code and request ID.
printf(
    'status code:' . $result->statusCode . PHP_EOL .
    'request id:' . $result->requestId
);

Obtain the configuration information of global Block Public Access for OSS

You can use the following code to obtain the configuration information for global Block Public Access.

<?php

// Import the autoloader file to load dependency libraries.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Define the description of command line arguments.
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // The region is a required argument. It specifies the region where the bucket is located.
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // The endpoint is an optional argument. It specifies the domain name that other services can use to access OSS.
];

// Generate a list of long options to parse command line arguments.
$longopts = \array_map(function ($key) {
    return "$key:"; // A colon (:) is added after each parameter to indicate that a value is required.
}, array_keys($optsdesc));

// Parse command line arguments.
$options = getopt("", $longopts);

// Check whether required arguments are missing.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Prompt the user that a required argument is missing.
        exit(1);
    }
}

// Obtain the values of command line arguments.
$region = $options["region"]; // The region where the bucket is located.

// Use environment variables to load credential information, including AccessKeyId and AccessKeySecret.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Use the default configurations of the SDK.
$cfg = Oss\Config::loadDefault();

// Set the credential provider.
$cfg->setCredentialsProvider($credentialsProvider);

// Set the region.
$cfg->setRegion($region);

// If an endpoint is provided, set the endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Create an OSS client instance.
$client = new Oss\Client($cfg);

// Build a GetPublicAccessBlock request to obtain the Block Public Access configuration.
$request = new Oss\Models\GetPublicAccessBlockRequest();

// Call the getPublicAccessBlock method to obtain the Block Public Access configuration and accept the returned result.
$result = $client->getPublicAccessBlock($request);

// Print the returned result, including the status code, request ID, and Block Public Access configuration.
printf(
    'status code:' . $result->statusCode . PHP_EOL .
    'request id:' . $result->requestId . PHP_EOL .
    'public access block config:' . var_export($result->publicAccessBlockConfiguration, true)
);

Delete the configuration information of global Block Public Access for OSS

You can use the following code to delete the configuration information for global Block Public Access.

<?php

// Import the autoloader file to load dependency libraries.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Define the description of command line arguments.
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // The region is a required argument. It specifies the region where the bucket is located.
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // The endpoint is an optional argument. It specifies the domain name that other services can use to access OSS.
];

// Generate a list of long options to parse command line arguments.
$longopts = \array_map(function ($key) {
    return "$key:"; // A colon (:) is added after each parameter to indicate that a value is required.
}, array_keys($optsdesc));

// Parse command line arguments.
$options = getopt("", $longopts);

// Check whether required arguments are missing.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Prompt the user that a required argument is missing.
        exit(1);
    }
}

// Obtain the values of command line arguments.
$region = $options["region"]; // The region where the bucket is located.

// Use environment variables to load credential information, including AccessKeyId and AccessKeySecret.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Use the default configurations of the SDK.
$cfg = Oss\Config::loadDefault();

// Set the credential provider.
$cfg->setCredentialsProvider($credentialsProvider);

// Set the region.
$cfg->setRegion($region);

// If an endpoint is provided, set the endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Create an OSS client instance.
$client = new Oss\Client($cfg);

// Build a DeletePublicAccessBlock request to delete the Block Public Access configuration.
$request = new Oss\Models\DeletePublicAccessBlockRequest();

// Call the deletePublicAccessBlock method to delete the Block Public Access configuration and accept the returned result.
$result = $client->deletePublicAccessBlock($request);

// Print the returned result, including the status code and request ID.
printf(
    'status code:' . $result->statusCode . PHP_EOL .
    'request id:' . $result->requestId
);

References

  • For the complete sample code used to manage global Block Public Access for OSS, see GitHub sample.

  • For more information about the API operation used to enable global Block Public Access for OSS, see PutPublicAccessBlock.

  • For more information about the API operation used to obtain the configuration information for global Block Public Access, see GetPublicAccessBlock.

  • For more information about the API operation used to delete the configuration information for global Block Public Access, see DeletePublicAccessBlock.