Windows Azure Webサイトでphp.iniを変更する方法


Windows AzureのWebサイト機能では、PHP5.3を利用することができます。

その実行時設定を変更したい場合、どこで設定したらよいのでしょうか?

php.iniファイルは私たちユーザーが触れる場所にないため、直接変更することができません。

ini_set等の関数で変更することは容易に思いつきますが、プログラムを修正しなければなりません。

他には.user.iniファイルを該当のディレクトリに置く方法もありますが、PHP_INI_SYSTEMな変更可能範囲のオプションは対象外です。

そのため、Extensionの追加など、php.iniファイルで設定する必要があるオプションの変更はどのようにするのでしょうか?

ここでは、Windows Azure Webサイト機能のPHPにExtensionを追加する方法とその他のPHP_INI_SYSTEMなオプションを変更する方法について説明します。

Extensionを追加する方法

Extensionを追加するには、まず、追加したいExtensionのdllファイル(php_memcache.dllなど)をWebサイトにアップロードします。

gitを利用しているならプロジェクトのルートディレクトリ\bin\の下、FTPを利用しているなら、site\wwwroot\bin\の下などが良いでしょう。(ドキュメントルートの下でもbinディレクトリの中はWebサーバーでは非公開になります。)

Windows Azureの管理ポータルで対象のWebサイトのCONFIGUREを開き、app settingsのKEYに『PHP_EXTENSIONS』を、VALUEに『bin\~.dll』追加します。

これでSAVEすればEXTENSIONが有効になるのでphpinfo()などで確認しましょう。

PHP_INI_SYSTEMなオプションを変更する方法 (php.iniの設定を変更する方法)

Windows Azure WebサイトでPHP_INI_SYSTEMなオプションを変更したい場合は、php.iniファイルを自分で用意したものに置き換えます。

まず、独自の設定をしたphp.iniファイルを用意し、それをWebサイトにアップロードします。

gitを利用しているならプロジェクトのルートディレクトリ\bin\の下、FTPを利用しているなら、site\wwwroot\bin\の下などが良いでしょう。(ドキュメントルートの下でもbinディレクトリの中はWebサーバーでは非公開になります。)

Windows Azureの管理ポータルで対象のWebサイトのCONFIGUREを開き、handler mappingsのEXTENSIONに『*.php』、SCRIPT PROCESSOR PATHに『%ProgramFiles(x86)%\PHP\v5.3\php-cgi.exe』、ADDITIONAL ARGUMENTS (OPTION)に『-c %SystemDrive%\home\site\wwwroot\bin\php.ini』を追加しましょう。

これで保存すれば、参照されるphp.iniファイルが変更されるのでphpinfo()を確認すると、以下のように読み込んでいるphp.iniファイルが変わります。

設定前

↓↓↓↓↓↓

設定後

この方法で利用するphp.iniファイルを変更する場合、変更前のphpinfo()の結果を参考に、いくつかの値は以下のように変更しておくとよいでしょう。

  • error_log=C:\DWASFiles\Sites\{Webサイト名}\Temp\php_errors.log
  • upload_tmp_dir=C:\DWASFiles\Sites\{Webサイト名}\Temp
  • session.save_path=C:\DWASFiles\Sites\{Webサイト名}\Temp
  • extension_dir = “.\ext\”
  • cgi.force_redirect=0
  • cgi.fix_pathinfo=1
  • fastcgi.impersonate=1
  • fastcgi.logging=0

また、この方法で利用するphp.iniファイルを変更した場合、Extensionの追加は先ほど書いた方法ではできません。
この場合、Extensionのdllファイルをアップロードし、置き換えるphp.iniファイルに『extension=D:\home\site\wwwroot\bin\php_memcache.dll』 などと記述しましょう。

参考)
Enabling PHP 5.4 in Windows Azure Web Sites
このページではPHP 5.4を利用するために、そのランタイムバイナリをWebサイトにアップロードして設定する方法が紹介されています。
このページを見て、PHP 5.3でphp.iniの変更ができるのでは?と思い立ち、この記事を書きました。



コメント / トラックバック1件

  1. .NET Clips より:

    Windows Azure Webサイトでphp.iniを変更する方法 | Windows Maniax

    素敵なエントリーの登録ありがとうございます – .NET Clipsからのトラックバック

コメントをどうぞ