Windows Azure Web SitesでPHPのトラブルシューティングをする方法

1. phpinfo()

これがもっともよく使用するツールです。
PHPランタイムにかんする多くの情報を出力してくれます。
有効になっているPHPエクステンションや、サーバー情報やPHPの設定を確認することができます。

phpinfo()を使用するために、次の1行を含むPHPファイルを作成します。

<?php phpinfo(); ?> 

このファイル名は推測しにくいファイル名にしてください。
phpinfo.phpみたいなのは避けてください。
サイトのrootディレクトリにアップロードしてください。Webブラウザにアップロードすると次のようなページが出力されます。

phpinfoから出力される情報はセキュリティ上機敏な情報が含まれています。必要性がなくなったら、削除する用意してください。

2. wincache.php

WinCacheエクステンションは、PHP WebSitesで既定で有効になっています。
オペレーションコードやユーザーキャッシュの動作状況、現在のキャッシュコンテンツを確認するには、winchache source code リポジトリからダウンロードするwinchache.phpスクリプトを使用します。
スクリプトを取得し、ユーザ名とパスワードを編集して利用します。

/**  * ======================== CONFIGURATION SETTINGS ==============================
* If you do not want to use authentication for this page, set USE_AUTHENTICATION to 0.
* If you use authentication then replace the default password.
*/ 
define(‘USE_AUTHENTICATION’, 1); 
define(‘USERNAME’, ‘someusername’); 
define(‘PASSWORD’, ‘somepassword’); 

websitesのルートディレクトリにアップロードし、Webブラウザでアクセスします。
次のような結果が出力されます。

3. PHP エラーログ

Windows AzureのPHPランタイムは、サイトのFTPルートは以下の/LogFilesにアプリケーションエラーログが格納されるように設定されています。

アプリケーションが動作していなかったり、ブランクページを表示する場合、エラーの詳細を確認するために、このファイルを参照してください。また運用時も定期的に確認するようにすると良いです。

デフォルトのエラーログ出力箇所を別の場所に変更することもできます。
.user.iniと呼ばれるファイルを作成し、次の行を追加します。

error_log=D:\Home\site\wwwroot\php_errors.log 

websaitsのルートディレクトリ(wwwroot)配下にファイルをアップロードします。

4. PHP display_errors

PHPランタイムのdisplay_errorsディレクティブは、HTTPレスポンスでえーらーを表示します。
プロダクション環境では、webサイト訪問者にエラーを見せないために、
OFFに設定しておくべきです。
開発、デバッグ目的で一時的に使用する際には、.user.iniファイルに次の内容を記載してください。

display_errors=On 
html_errors=On 
error_reporting = E_ALL 

アプリケーションでエラーがあると、Webブラウザにエラーが出力されます。

5. HTTPログ、詳細エラーメッセージ、失敗リクエストのトレース

デフォルトでは、HTTPロギング、詳細エラーメッセージ失敗リクエストのトレースはオフになっています。有効にするには、Windows AzureポータルでCONFIGUREページを使用します。

有効にすると、サイトのFTPルート配下のディレクトリにログが出力されます。

  • HTTPログファイル:/LogFiles/http/RawLogs;
  • 詳細エラーログ:/LogFiles/DetailedErrors;
  • 失敗リクエストのトレースログ:/LogFiles/W3SVC#########/;

6. XDebug PHP エクステンション

Xdebugは、数多くの有益なデバッグ情報を提供してくれるPHPスクリプトのプロファイリング、デバッグに役立つ、とても有名なPHPエクステンションです。
Windows AzureでXdebugを有効にするあために、ダウンロードページから適切にビルドされたXDebugエクステンションをダウンロードします。PHP 5.3を使用している場合は、「5.3 VC9 (32 bit)」をダウンロードします。PHP 5.4を使用している場合は、「5.4 VC9 (32 bit)」をダウンロードします。Windwos OSno64ビットを使用していても、32ビットでビルドされたものを使用します。
スレッドセーフ(TS)ビルドは使用しないでください。

/site/wwwroot/binディレクトリに、php_xdebug_####.dllファイルをアップロードしてください。
binディレクトリが存在しない場合は作成してください。
xdebugエクステンションを有効にするために、アップロード後Windows AzureポータルのCONFIGUREタブを使用します。

xdebugを有効にすると、詳細なエラーメッセージとコールスタックを取得できるようになります。

7. ClearDBのステータス

MYSQLデータベースのホスティングを提供するClearDBサービスはWindows Azureポータルに統合されています。ポータルからMySQLデータベースの管理と購入ができます。
課金も統合されており、ClearDBの課金はWindows Azureサブスクリプションに含まれています。

ADD-ONSタブを使用して、ClearDB管理ページにアクセスします。

ほかのデータベース管理情報にアクセスするのと同様、ClearDBクエリ情報ページが開きます。

データベースでのクエリの性能情報チャートが表示されます。

参考情報

PHP Troubleshooting in Windows Azure Web Sitesをざっくり抜粋して意訳した投稿です。