2016-10-14 1 views
2

Я пытаюсь, чтобы моя PHP-вики, работающая на Azure Web App, доступ к моему хранилищу Azure Blob, чтобы передать его содержимое, но, похоже, у него есть некоторые проблемы при обращении контейнер blob.Доступ к хранилищу Blob из PHP Запуск на Azure Web App

Согласно некоторым ссылкам, я установил плагин для композитора и microsoft/windowsazure в свое приложение. Расположение папки поставщика - D: \ site \ wwwroot \ wiki \ bar \ vendor.

Я также создаю index2.php (в настоящее время используется index.php) с кодом ниже.

<?php 

ini_set("display_errors", On); 
error_reporting(E_ALL); 

require_once 'vendor\autoload.php'; 

use WindowsAzure\Common\ServicesBuilder; 
use WindowsAzure\Common\ServiceException; 

// Create blob REST proxy. 
$connectionString = "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<key>;"; 
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString); 


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

    foreach($blobs as $blob) 
    { 
     echo $blob->getName().": ".$blob->getUrl()."<br />"; 
    } 
} 
catch(ServiceException $e){ 
    // Handle exception based on error codes and messages. 
    // Error codes and messages are here: 
    // http://msdn.microsoft.com/library/azure/dd179439.aspx 
    $code = $e->getCode(); 
    $error_message = $e->getMessage(); 
    echo $code.": ".$error_message."<br />"; 
} 

Однако, я получил эту ошибку, когда она бежала.

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'The path of a URI with an authority must start with a slash "/" or be empty' in D:\home\site\wwwroot\wiki\bar\vendor\guzzlehttp\psr7\src\Uri.php:693 
Stack trace: 
    #0 D:\home\site\wwwroot\wiki\bar\vendor\guzzlehttp\psr7\src\Uri.php(502): GuzzleHttp\Psr7\Uri->validateState() 
    #1 D:\home\site\wwwroot\wiki\bar\vendor\microsoft\azure-storage\src\Common\Internal\ServiceRestProxy.php(124): GuzzleHttp\Psr7\Uri->withPath('wiki') 
    #2 D:\home\site\wwwroot\wiki\bar\vendor\microsoft\azure-storage\src\Blob\BlobRestProxy.php(1181): MicrosoftAzure\Storage\Common\Internal\ServiceRestProxy->send('GET', Array, Array, Array, 'wiki', 200) 
    #3 D:\home\site\wwwroot\wiki\bar\index2.php(18): MicrosoftAzure\Storage\Blob\BlobRestProxy->listBlobs('wiki') 
    #4 {main} thrown in D:\home\site\wwwroot\wiki\bar\vendor\guzzlehttp\psr7\src\Uri.php on line 693 

Невозможно ли получить доступ к хранилищу из этого места с помощью такого рода php-кода?

ответ

1

Я нашел решение.

Как сказано в сообщении messege, необходимо было поставить «/» перед «wiki», который был именем контейнера. Инструкция на azure.microsoft.com не помещала знак, чтобы я все еще не мог найти причину, по которой это решение, хотя ...

Смежные вопросы