Web Apps で Azure SDK for PHP を使用する方法

Web Appsには、PHPランタイムが標準でインストールされているので気軽にPHPを使ってコーディングすることができます。Azure Storage ServiceをPHPから使いたい場合は、Azure SDK for PHP を使用すると簡単に処理を書くことができます。

でも、動作させるのに一部不明点もあり、はまったので回避策をメモしておきます。この回避策がいいのか、回避しなくても公式ドキュメント通りで良いのかは不明。

Azure SDK for PHPの環境準備

公式ドキュメントによると、Composer経由でのインストールや、PEARパッケージでのインストールが案内されています。まぁこの通りにやれば動作すると思うのです。

でも、これで環境を作成した場合は、インスタンスが移動したり、スケールアップ/ダウンさせた場合、環境は残っているのだろうか。永続化されるのだろうか…?

これに関しては正解は調べきれてないのだけど、なんとなく永続化対象外になりそうだったので、永続化されるように環境を作りました。

.user.ini ファイルの準備

githabuを使用した自動デプロイメントの環境でWeb Appsにデプロイしているので、githubにコミットしたもので構築した環境なら永続化されるだろうって、ことでコミットしまくります。

Azure SDK for PHPの依存ライブラリを使うために、依存ライブラリを配置するディレクトリを、.user.iniファイル(これは、rootディレクトリに配置。githubでコミットする際のルートディレクトリ配下。)を作成して、以下内容を記述しました。

include_path = ‘.;D:\home\site\wwwroot\php’

ついでに、デバッグしやすいようにログの出力先の変更と画面への表示を許可することにしました。

error_log=D:\Home\site\wwwroot\php_errors.log
display_errors=On 
html_errors=On 
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT

これで下準備OK!

依存ライブラリのインストール

依存ライブラリを配置します。配置場所は、rootディレクトリ直下にphpディレクトリを作成し、そこに配置しました。
配置したのは、HTTP/Request2、Net/URL2、PEARの3つ。

image

 

Azure SDK for PHP のインストール

ここまでで準備が完了したので、Azure SDK for PHPを実際にダウンロードして配置します。

後は、公式ドキュメント通り。

require_once ‘.\WindowsAzure\WindowsAzure.php’;

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

読み込んで、名前空間を宣言します。そのあと、接続文字列を書いて、それをProxyに渡すと。

$connectionString = “DefaultEndpointsProtocol….”;
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);

これで、例えばBlockBlobを追加するなら、それを呼び出すと。

try {
     //Upload blob
     $blobRestProxy->createBlockBlob(“traning”, $blob_name, $content);
}
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 />”;
}

これで処理完了。簡単ですね。