このエントリーはSymfonyアドベントカレンダー2011に参加しています。CakePHPの人として知られている私ですがSymfonyも業務では4年以上利用し続けております。今回は22日目担当とWindows Azure + PHPの環境でSymfonyを動かしてみました。いろいろと面倒なところがありそうな予感もしますが、これまでの知識を元に公式のチュートリアルを動かす事を目標にやってみます。

SQLite拡張の有効化


ではWindws Azure PHPプロジェクトを新規に作成し、Symfony2.0.7をダウンロードしたものをソースに取込んで動かしてみます。画面のようにSQLiteの拡張が見つからないというメッセージが表示されます。Azure SDKに同梱されたPHPではSQLiteが有効になっていなかったので、php/php.ini 内のコメントを外し、SQLiteを有効にします。


これでフレームワーク部分は動作していますので、デモ用のバンドルに含まれている画面などは上記のように動作しています。

データベースの接続設定


SQLiteを有効にした事で開発用のブートストラップからダッシュボードにアクセスできます。ここからデータベースの接続設定をしていきますが、残念ながらここにはMySQLやPDO_MSSqlといった選択肢しかありません。もちろんMySQLなどをAzureで動作させればここから設定をすれば問題はありません。とはいえせっかくAzureですからAzureSQLに接続して動かしたいですよね。
AzureSQLに接続するにはmicrosoftから配布されているsqlsrv拡張を導入する必要があります。Azureプロジェクトに同梱されているバージョンに併せた拡張をプロジェクト内にコピーして、これもphp.iniから正しく読み込まれるように設定します。

extension="php_azure.dll"
extension="php_mysql.dll"
extension="php_sqlsrv_53_nts_vc9.dll"
extension="php_pdo_sqlsrv_53_nts_vc9.dll"

またデータベースへの接続設定はダッシュボードからではなく直接設定ファイルを編集して設定します。

[parameters]
    database_driver   = pdo_sqlsrv
    database_host     = YOUR-PC\SQLEXPRESS
    database_port     =
    database_name     = symfony
    database_user     = sa
    database_password = yourpassword

Doctrineの操作


ここまでの設定を行った事でDoctrine経由でのスキーマ操作等が行えます。シェルを実行した際には少しエラーが出てしまいますが、タスクの実行自体に問題はありません。ソースコードの変更を伴うようなタスクを実行した後はプロジェクトを開発ファブリックに再度反映する必要がある点には注意してください。

ここまでの動作確認は開発ファブリック上で行っています。このプロジェクトを本当にデプロイできるかどうかを試してみたいのは山々なのですが、残念ながらAzureのアカウントを持っていません。とはいえsqlsrv拡張を通じてAzure SQLにアクセスできる事は周知されているので問題ないと言って差し支えないでしょう。