Azure App Service Web Apps での PHP の構成方法

はじめに

このガイドでは、ビルトインの PHP ランタイムを Azure App Serviceの Web Apps で構成する方法、カスタムの PHP ランタイムを提供する方法、および拡張機能を有効にする方法を示します。 App Service を使用するには、 無料試用版にサインアップしてください。 このガイドを最大限に活用するには、まず App Service で PHP Web アプリを作成する必要があります。

メモ

この記事は、Web アプリについて言及していますが、API アプリとモバイル アプリにも適用されます。

方法: ビルトインの PHP バージョンを変更する

既定では、App Service Web アプリを作成すると PHP 5.4 がインストールされ、直ちに使用できる状態になります。 使用可能なリリース リビジョン、既定の構成、および有効な拡張機能を確認するには、 phpinfo() 関数を呼び出すスクリプトをデプロイします。

PHP 5.5 および PHP 5.6 も使用できますが、既定では有効になっていません。 PHP バージョンを更新するには、次のいずれかの方法に従います。

Azure ポータル

  1. Azure ポータル で Web アプリに移動し、 [設定] ボタンをクリックします。

    [保存]

  2. [設定] ブレードで、[アプリケーションの設定] を選択し、新しい PHP バージョンを指定します。

    [アプリケーションの設定]

  3. [Web アプリの設定] ブレードの上部にある[保存] ボタンをクリックします。

    構成設定を保存する

Azure PowerShell (Windows)。

  1. Azure PowerShell を起動し、アカウントにログインします。

     PS C:\> Login-AzureRmAccount
    
  2. Web アプリの PHP バージョンを設定します。

     PS C:\> Set-AzureWebsite -PhpVersion {5.4 | 5.5 | 5.6} -Name {app-name}
    
  3. PHP バージョンが設定されました。 これらの設定を確認できます。

     PS C:\> Get-AzureWebsite -Name {app-name} | findstr PhpVersion
    

Azure コマンド ライン インターフェイス (Mac、Linux、Windows)

Azure コマンド ライン インターフェイスを使用するには、 Node.js をコンピューターにインストールする必要があります。

  1. ターミナルを開いてアカウントにログインします。

     azure login
    
  2. Web アプリの PHP バージョンを設定します。

     azure site set --php-version {5.4 | 5.5 | 5.6} {app-name}
    
  3. PHP バージョンが設定されました。 これらの設定を確認できます。

     azure site show {app-name}
    
メモ

上記に相当する Azure CLI 2.0 のコマンドは次のとおりです。

az login
az appservice web config update --php-version {5.5 | 5.6 | 7.0} -g {resource-group-name} -n {app-name}
az appservice web config show -g {resource-group-name} -n {app-name}

方法: ビルトインの PHP 構成を変更する

次の手順に従うと、いずれのビルトイン PHP ランタイムについても、任意の構成オプションを変更できます (php.ini ディレクティブについては、php.ini ディレクティブの一覧を参照してください)。

PHP_INI_USER、PHP_INI_PERDIR、PHP_INI_ALL 構成設定の変更

  1. .user.ini ファイルをルート ディレクトリに追加します。
  2. php.ini ファイルで使用するものと同じ構文を使用して、構成設定を .user.ini ファイルに追加します。 たとえば、display_errors 設定をオンにして upload_max_filesize を 10 M に設定する場合は、.user.ini ファイルに次のテキストを含めます。

     ; Example Settings
     display_errors=On
     upload_max_filesize=10M
    
     ; OPTIONAL: Turn this on to write errors to d:\home\LogFiles\php_errors.log
     ; log_errors=On
    
  3. Web アプリをデプロイします。
  4. Web アプリを再起動します。 (再起動する必要があるのは、.user.ini ファイルが PHP によって読み取られる頻度が、user_ini.cache_ttl 設定によって制御されるためです。この設定はシステム レベルの設定であり、既定では 300 秒 (5 分) です。 Web アプリを再起動すると、PHP により、.user.ini ファイル内の新しい設定が強制的に読み取られます。)

.user.ini ファイルを使用する代わりに、スクリプト内で ini_set() 関数を使用して、システム レベルのディレクティブではない構成オプションを設定することもできます。

PHP_INI_SYSTEM 構成設定の変更

  1. アプリの設定 (キー PHP_INI_SCAN_DIR、値 d:\home\site\ini) を Web アプリに追加する
  2. Kudu Console (http://<site-name>.scm.azurewebsite.net) を使用して、d:\home\site\ini ディレクトリに settings.ini ファイルを作成します。
  3. 'php.ini' ファイルで使用するものと同じ構文を使用して、構成設定を settings.ini ファイルに追加します。 たとえば、curl.cainfo 設定を *.crt ファイルにポイントし、'wincache.maxfilesize' 設定を 512 K に設定すると、settings.ini ファイルには次のテキストが含まれます。

     ; Example Settings
     curl.cainfo="%ProgramFiles(x86)%\Git\bin\curl-ca-bundle.crt"
     wincache.maxfilesize=512
    
  4. 変更内容を読み込むには、Web アプリを再起動します。

方法: 既定の PHP ランタイムで拡張機能を有効にする

前のセクションにも示されているように、既定の PHP バージョン、既定の構成、および有効な拡張機能を確認するには、 phpinfo()を呼び出すスクリプトをデプロイします。 追加の拡張機能を有効にするには、次の手順に従います。

Ini 設定を使用して構成します。

  1. d:\home\site ディレクトリを ext ディレクトリに追加します。
  2. ext ディレクトリに、.dll 拡張ファイル (php_mongo.dllphp_xdebug.dll など) を配置します。 拡張機能は、PHP の既定バージョン (この文書の作成時点では PHP 5.4) との互換性があり、VC9 および非スレッドセーフ (nts) 互換であることを確認してください。
  3. アプリの設定 (キー PHP_INI_SCAN_DIR、値 d:\home\site\ini) を Web アプリに追加する
  4. ini ファイルを extensions.ini と呼ばれる d:\home\site\ini に作成します。
  5. 'php.ini' ファイルで使用するものと同じ構文を使用して、構成設定を extensions.ini ファイルに追加します。 たとえば、MongoDB や XDebug 拡張機能を有効にする場合、 extensions.ini ファイルには次のテキストが含まれます。

     ; Enable Extensions
     extension=d:\home\site\ext\php_mongo.dll
     zend_extension=d:\home\site\ext\php_xdebug.dll
    
  6. 変更内容を読み込むには、Web アプリを再起動します。

アプリ設定の構成

  1. ディレクトリを bin ディレクトリに追加します。
  2. bin ディレクトリに、.dll 拡張ファイル (php_mongo.dll など) を配置します。 拡張機能は、PHP の既定バージョン (この文書の作成時点では PHP 5.4) との互換性があり、VC9 および非スレッドセーフ (nts) 互換であることを確認してください。
  3. Web アプリをデプロイします。
  4. Azure ポータルで Web アプリに移動し、 [設定] ボタンをクリックします。

    [保存]

  5. [設定] ブレードで、[アプリケーションの設定] を選択し、[アプリの設定] セクションまでスクロールします。
  6. [アプリの設定] セクションで、PHP_EXTENSIONS キーを作成します。 このキーの値は、Web サイト ルート (bin\your-ext-file) への相対パスになります。

    [アプリケーション設定] で拡張機能を有効にする

  7. [Web アプリの設定] ブレードの上部にある[保存] ボタンをクリックします。

    構成設定を保存する

Zend 拡張機能も、PHP_ZENDEXTENSIONS キーを使用することによってサポートされます。 複数の拡張機能を有効にするには、複数の .dll ファイルをコンマで区切って指定します。

方法: カスタムの PHP ランタイムを使用する

App Service Web Apps では、既定の PHP ランタイムを使用する代わりに、指定された PHP ランタイムを使用して PHP スクリプトを実行することができます。 指定するランタイムは、同様に指定する php.ini ファイルによって構成できます。 カスタムの PHP ランタイムを Web Apps で使用するには、次の操作を行います。

  1. 非スレッドセーフおよび VC9 または VC11 互換バージョンの Windows 用 PHP を入手します。 Windows 用 PHP の最近のリリースは、 http://windows.php.net/download/にあります。 以前のリリースは、アーカイブ http://windows.php.net/downloads/releases/archives/にあります。
  2. 使用するランタイム用に php.ini ファイルを変更します。 システム レベルのみのディレクティブである構成設定は、Web Apps では無視されます (システム レベルのみのディレクティブについては、php.ini ディレクティブの一覧を参照してください)。
  3. また、PHP ランタイムに拡張機能を追加して、これらを php.ini ファイル内で有効にすることもできます。
  4. bin ディレクトリをルート ディレクトリに追加し、その中に、PHP ランタイムが含まれているディレクトリ (bin\php など) を配置します。
  5. Web アプリをデプロイします。
  6. Azure ポータルで Web アプリに移動し、 [設定] ボタンをクリックします。

    [保存]

  7. [設定] ブレードで、[アプリケーションの設定] を選択し、[ハンドラー マッピング] セクションまでスクロールします。 [拡張] フィールドに *.php を追加し、php-cgi.exe 実行可能ファイルのパスを追加します。 アプリケーションのルートにある bin ディレクトリに PHP ランタイムを配置した場合、パスは D:\home\site\wwwroot\bin\php\php-cgi.exe になります。

    [ハンドラー マッピング] でハンドラーを指定する

  8. [Web アプリの設定] ブレードの上部にある[保存] ボタンをクリックします。

    構成設定を保存する

方法: Azure で Composer 自動化を有効にする

既定では、PHP プロジェクトに composer.json があっても、App Service で処理されません。 Git デプロイを使用する場合、git push で composer.json の処理を有効にするには、Composer 拡張機能を有効にします。

  1. Azure ポータルの PHP Web アプリのブレードで、[ツール] > [拡張機能] をクリックします。

    Azure でのComposer 自動化を有効にする Azure ポータルの設定のブレード

  2. [追加][Composer] の順にクリックします。

    Azure で Composer 拡張機能を追加して Composer 自動化を有効にする

  3. [OK] をクリックして法律条項に同意します。 もう一度 [OK] をクリックすると、拡張機能が追加されます。

    これで、 [インストールされている拡張機能] ブレードに Composer 拡張機能が表示されるようになります。
    Azure で法律条項に同意して Composer 自動化を有効にする

  4. 前のセクションと同様に、git addgit commitgit push を実行します。 composer.json で定義されている依存関係が Composer によってインストールされていることを確認できます。

    Azure での Composer 自動化を使用した Git デプロイ

次のステップ

詳細については、 PHP デベロッパー センターを参照してください。

メモ

Azure アカウントにサインアップする前に Azure App Service の使用を開始したい場合は、「Azure App Service アプリケーションの作成」を参照してください。そこでは、App Service で有効期間の短いスターター Web アプリをすぐに作成できます。 このサービスの利用にあたり、クレジット カードは必要ありません。契約も必要ありません。