当您使用OSS PHP SDK访问OSS出现错误时,OSS会返回HTTP Code、Message、RequestId、EC错误码等信息,其中EC码对应一个具体的错误原因,您可以使用EC码自助进行错误排查。
操作步骤
例如,当您使用以下代码下载一个并不存在的文件时。
<?php // 引入自动加载文件,确保依赖库能够正确加载 require_once __DIR__ . '/../vendor/autoload.php'; use AlibabaCloud\Oss\V2 as Oss; // 定义命令行参数的描述信息 $optsdesc = [ "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // Bucket所在的地域(必填) "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // 访问域名(可选) "bucket" => ['help' => 'The name of the bucket', 'required' => True], // Bucket名称(必填) "key" => ['help' => 'The name of the object', 'required' => True], // 对象名称(必填) ]; // 将参数描述转换为getopt所需的长选项格式 // 每个参数后面加上":"表示该参数需要值 $longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc)); // 解析命令行参数 $options = getopt("", $longopts); // 验证必填参数是否存在 foreach ($optsdesc as $key => $value) { if ($value['required'] === True && empty($options[$key])) { $help = $value['help']; // 获取参数的帮助信息 echo "Error: the following arguments are required: --$key, $help" . PHP_EOL; exit(1); // 如果必填参数缺失,则退出程序 } } // 从解析的参数中提取值 $region = $options["region"]; // Bucket所在的地域 $bucket = $options["bucket"]; // Bucket名称 $key = $options["key"]; // 对象名称 // 加载环境变量中的凭证信息 // 使用EnvironmentVariableCredentialsProvider从环境变量中读取Access Key ID和Access Key Secret $credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider(); // 使用SDK的默认配置 $cfg = Oss\Config::loadDefault(); $cfg->setCredentialsProvider($credentialsProvider); // 设置凭证提供者 $cfg->setRegion($region); // 设置Bucket所在的地域 if (isset($options["endpoint"])) { $cfg->setEndpoint($options["endpoint"]); // 如果提供了访问域名,则设置endpoint } // 创建OSS客户端实例 $client = new Oss\Client($cfg); // 创建GetObjectRequest对象,用于获取指定对象的内容 $request = new Oss\Models\GetObjectRequest(bucket: $bucket, key: $key); // 执行获取对象操作 $result = $client->getObject($request); // 定义要保存的本地文件路径 $localFilePath = 'path/to/local/file.txt'; // 请替换为实际的文件路径 // 将内容写入本地文件 file_put_contents( $localFilePath, $result->body->getContents()); // 打印获取结果 // 输出HTTP状态码、请求ID以及对象的内容 printf( 'status code:' . $result->statusCode . PHP_EOL . // HTTP状态码 'request id:' . $result->requestId . PHP_EOL // 请求ID,用于调试或追踪请求 );
返回示例如下,返回结果中包含'EC': '0026-00000001',作为该错误原因的唯一标识。
通过以上错误请求示例返回的EC错误码查找问题原因及对应解决方法的操作步骤如下。
在搜索框中,输入EC错误码,例如0026-00000001。
在搜索结果中查找问题原因及对应解决方案。
该文章对您有帮助吗?