2 votes

Connexion à azure-blob via azure-website avec php

J'ai mis en place un site web Windows azure (php), et je veux me connecter à l'environnement de stockage azure (blob). J'ai parcouru les Comment utiliser le service Blob depuis PHP mais cela ne concerne que le cas où le site web est stocké localement.

J'ai essayé de mettre en place quelques cas, mais je reçois constamment une erreur http 500.

<?php
require_once 'WindowsAzure/WindowsAzure.php';

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

//$connectionString = "\WindowsAzure\Blob\Internal\IBlob";

// Create blob REST proxy.
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString); // the code gets stuck at this line, result is a HTTP 500 error

$content = fopen("C:\Users\Public\Pictures\Sample%20Pictures\Woestijn.jpg", "r");
$blob_name = "newBlob";

try {
    //Upload blob
    $blobRestProxy->createBlockBlob("default", $blob_name, $content);
}
catch(ServiceException $e){
    // Handle exception based on error codes and messages.
    // Error codes and messages are here: 
    // http://msdn.microsoft.com/en-us/library/windowsazure/dd179439.aspx
    $code = $e->getCode();
    $error_message = $e->getMessage();
    echo $code.": ".$error_message."<br />";
}?>

Y a-t-il quelqu'un qui a eu un problème similaire et qui a réussi à le résoudre ?

EDIT :

J'ai maintenant réduit la recherche de l'erreur. Je suis allé dans le fichier ServicesBuilder.php, et j'ai commenté ligne par ligne, jusqu'à ce que la page cesse de fonctionner. La ligne où l'erreur s'est produite est la suivante $httpClient comme indiqué ci-dessous :

public function createBlobService($connectionString)
{
    $settings = StorageServiceSettings::createFromConnectionString(
        $connectionString
    );

    $httpClient    = $this->httpClient();
    $serializer    = $this->serializer();
    $uri           = Utilities::tryAddUrlScheme(
        $settings->getBlobEndpointUri()
    );

3voto

Sandrino Di Mattia Points 18144

D'après ce que je vois, vous remplissez le $connectionString avec cette valeur : "\WindowsAzure\Blob\Internal\IBlob" (même s'il est commenté - donc probablement vous le passez d'un autre endroit). Si c'est le cas, vous devrez le modifier.

La chaîne de connexion doit être une référence à votre compte de stockage contenant le protocole, le nom du compte et la clé (vous pouvez trouver le nom et la clé dans le portail) :

$connectionString = "DefaultEndpointsProtocol=https;AccountName=jeroensaccount;AccountKey=fjmezfjmIOFJEZIOPAFJAZOPIFJAIMO"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X