2016-10-14 2 views
2

Ich versuche, mein PHP-Wiki, das auf Azure Web App läuft, auf meinen Azure Blob Storage zuzugreifen, um auf seinen Inhalt zu verweisen, aber es scheint Probleme beim Verweisen zu geben ein Blob-Container.Zugriff auf Blob Storage über PHP unter Azure Web App

Laut einigen Referenzen habe ich das Composer und Microsoft/Windowsazure Plugin zu meiner App installiert. Der Speicherort des Herstellerordners ist D: \ Site \ wwwroot \ wiki \ bar \ vendor.

Ich auch Index2.php (index.php wird derzeit verwendet) mit dem Code unten erstellt.

<?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 />"; 
} 

Allerdings habe ich diesen Fehler, als es lief.

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 

Ist es nicht möglich, mit dieser Art von PHP-Code auf den Speicher von diesem Speicherort zuzugreifen?

Antwort

1

Ich fand die Lösung.

Wie die Fehlermeldung sagte, war es notwendig, "/" vor "wiki" zu setzen, was der Name des Containers war. Eine Anweisung auf azure.microsoft.com hat das Zeichen nicht gesetzt, so dass ich immer noch nicht den Grund finden kann, warum es die Lösung ist, obwohl ...

Verwandte Themen