使用Azure存储PHP SDK时,“请求输入之一超出范围”

Max*_*x Y 1 php storage azure azure-storage-blobs

我正在运行这段代码

require_once 'windowsazure\windowsazure.php';

use WindowsAzure\Common\ServicesBuilder;
use WindowsAzure\Blob\Models\CreateContainerOptions;
use WindowsAzure\Blob\Models\PublicAccessType;
use WindowsAzure\Common\ServiceException;

try {

$connectionString = "DefaultEndpointsProtocol=http;AccountName=xxx;AccountKey=yyyy";

// Create blob REST proxy.
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);

$createContainerOptions = new CreateContainerOptions();

$createContainerOptions->setPublicAccess(PublicAccessType::CONTAINER_AND_BLOBS);


// Set container metadata
$createContainerOptions->addMetaData("key1", "value1");
$createContainerOptions->addMetaData("key2", "value2");

// List blobs.
$blob_list = $blobRestProxy->listBlobs("mycontainer");
$blobs = $blob_list->getBlobs();

foreach($blobs as $blob)
{
    echo $blob->getName().": ".$blob->getUrl()."<br />";
}

// Create container.
$blobRestProxy->createContainer("phpcontainer", $createContainerOptions);

}
catch(ServiceException $e) {
$code = $e->getCode();
$error_message = $e->getMessage();
echo $code . ": " . $error_message . "<br/>";
}
Run Code Online (Sandbox Code Playgroud)

但是,它将报告以下错误

遇到ServiceException。400:失败:代码:400值:请求输入之一超出范围。详细信息(如果有):OutOfRangeInput其中一个请求输入超出范围。RequestId:xxxxxx时间:2015-05-13T08:47:18.0943278Z

在向Azure存储发送请求的第一行时

$blob_list = $blobRestProxy->listBlobs("mycontainer");
Run Code Online (Sandbox Code Playgroud)

我已经通过pear(http_request2, mail_mimemail_mimedecode)安装了Azure PHP SDK的依赖项,并将它们放在默认位置c:\php\pear\

connectionstring使用我应该是正确的。

我错过了什么?

谢谢

Max*_*x Y 7

事实证明,我在此处屏蔽的连接字符串中错误地指定了一个非法帐户名,更具体地说,我在帐户名中使用大写字母,但实际上Azure容器名称不允许包含大写字母,而且我的PHP项目尚未将大写转换为小写转换方法...

无论如何,希望遇到类似问题的任何人都可以先检查帐户名称,容器名称和Blob名称。

谢谢