Azure App Service での PHP の構成方法Configure PHP in Azure App Service

はじめにIntroduction

このガイドでは、ビルトインの PHP ランタイムを Azure App Service の Web アプリ、モバイル バックエンド、および API アプリで構成する方法、カスタムの PHP ランタイムを提供する方法、および拡張機能を有効にする方法を示します。This guide shows you how to configure the built-in PHP runtime for web apps, mobile back ends, and API apps in Azure App Service, provide a custom PHP runtime, and enable extensions. App Service を使用するには、 無料試用版にサインアップしてください。To use App Service, sign up for the free trial. このガイドを最大限に活用するには、まず App Service で PHP アプリを作成する必要があります。To get the most from this guide, you should first create a PHP app in App Service.

方法:ビルトインの PHP バージョンを変更するHow to: Change the built-in PHP version

既定では、App Service アプリを作成すると PHP 5.6 がインストールされ、直ちに使用できる状態になります。By default, PHP 5.6 is installed and immediately available for use when you create an App Service app. 使用可能なリリース リビジョン、既定の構成、および有効な拡張機能を確認するには、 phpinfo() 関数を呼び出すスクリプトをデプロイします。The best way to see the available release revision, its default configuration, and the enabled extensions is to deploy a script that calls the phpinfo() function.

PHP 7.0 および PHP 7.2 バージョンも使用できますが、既定では有効になっていません。PHP 7.0 and PHP 7.2 versions are also available, but not enabled by default. PHP バージョンを更新するには、次のいずれかの方法に従います。To update the PHP version, follow one of these methods:

Azure ポータルAzure portal

  1. Azure portal で目的のアプリに移動し、 [構成] ページにスクロールします。Browse to your app in the Azure portal and scroll to the Configuration page.

  2. [構成] から [全般設定] を選択し、新しい PHP バージョンを選択します。From Configuration, select General Settings and choose the new PHP version.

  3. [全般設定] ブレードの上部にある [保存] ボタンをクリックします。Click the Save button at the top of the General settings blade.

Azure PowerShell (Windows)。Azure PowerShell (Windows)

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

  1. Azure PowerShell を起動し、アカウントにログインします。Open Azure PowerShell, and login to your account:

     PS C:\> Connect-AzAccount
    
  2. アプリの PHP バージョンを設定します。Set the PHP version for the app.

     PS C:\> Set-AzureWebsite -PhpVersion {5.6 | 7.0 | 7.2} -Name {app-name}
    
  3. PHP バージョンが設定されました。The PHP version is now set. これらの設定を確認できます。You can confirm these settings:

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

Azure CLIAzure CLI

Azure コマンド ライン インターフェイスを使用するには、コンピューターに Azure CLI をインストール する必要があります。To use the Azure Command-Line Interface, you must Install the Azure CLI on your computer.

  1. ターミナルを開いてアカウントにログインします。Open Terminal, and login to your account.

     az login
    
  2. サポートされているランタイムの一覧を確認します。Check to see the list of supported runtimes.

     az webapp list-runtimes | grep php
    
  3. アプリの PHP バージョンを設定します。Set the PHP version for the app.

     az webapp config set --php-version {5.6 | 7.0 | 7.1 | 7.2} --name {app-name} --resource-group {resource-group-name}
    
  4. PHP バージョンが設定されました。The PHP version is now set. これらの設定を確認できます。You can confirm these settings:

     az webapp show --name {app-name} --resource-group {resource-group-name}
    

方法:ビルトインの PHP 構成を変更するHow to: Change the built-in PHP configurations

次の手順に従うと、いずれのビルトイン PHP ランタイムについても、任意の構成オプションを変更できますFor any built-in PHP runtime, you can change any of the configuration options by following these steps. (php.ini ディレクティブについては、php.ini ディレクティブの一覧を参照してください)。(For information about php.ini directives, see List of php.ini directives.)

PHP_INI_USER、PHP_INI_PERDIR、PHP_INI_ALL 構成設定の変更Changing PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL configuration settings

  1. .user.ini ファイルをルート ディレクトリに追加します。Add a .user.ini file to your root directory.

  2. php.ini ファイルで使用するものと同じ構文を使用して、構成設定を .user.ini ファイルに追加します。Add configuration settings to the .user.ini file using the same syntax you would use in a php.ini file. たとえば、display_errors 設定をオンにして upload_max_filesize を 10 M に設定する場合は、.user.ini ファイルに次のテキストを含めます。For example, if you wanted to turn on the display_errors setting and set upload_max_filesize setting to 10M, your .user.ini file would contain this text:

     ; 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. アプリをデプロイします。Deploy your app.

  4. アプリを再起動します。Restart the app. (再起動する必要があるのは、.user.ini ファイルが PHP によって読み取られる頻度が、user_ini.cache_ttl 設定によって制御されるためです。この設定はシステム レベルの設定であり、既定では 300 秒 (5 分) です。(Restarting is necessary because the frequency with which PHP reads .user.ini files is governed by the user_ini.cache_ttl setting, which is a system level setting and is 300 seconds (5 minutes) by default. アプリを再起動すると、PHP により、.user.ini ファイル内の新しい設定が強制的に読み取られます。)Restarting the app forces PHP to read the new settings in the .user.ini file.)

.user.ini ファイルを使用する代わりに、スクリプト内で ini_set() 関数を使用して、システム レベルのディレクティブではない構成オプションを設定することもできます。As an alternative to using a .user.ini file, you can use the ini_set() function in scripts to set configuration options that are not system-level directives.

PHP_INI_SYSTEM 構成設定の変更Changing PHP_INI_SYSTEM configuration settings

  1. アプリの設定 (キー PHP_INI_SCAN_DIR、値 d:\home\site\ini) をアプリに追加するAdd an App Setting to your app with the key PHP_INI_SCAN_DIR and value d:\home\site\ini

  2. Kudu Console (http://<site-name>.scm.azurewebsite.net) を使用して、d:\home\site\ini ディレクトリに settings.ini ファイルを作成します。Create an settings.ini file using Kudu Console (http://<site-name>.scm.azurewebsite.net) in the d:\home\site\ini directory.

  3. php.ini ファイルで使用するものと同じ構文を使用して、構成設定を settings.ini ファイルに追加します。Add configuration settings to the settings.ini file using the same syntax you would use in a php.ini file. たとえば、curl.cainfo 設定を *.crt ファイルにポイントし、'wincache.maxfilesize' 設定を 512 K に設定すると、settings.ini ファイルには次のテキストが含まれます。For example, if you wanted to point the curl.cainfo setting to a *.crt file and set 'wincache.maxfilesize' setting to 512K, your settings.ini file would contain this text:

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

方法:既定の PHP ランタイムで拡張機能を有効にするHow to: Enable extensions in the default PHP runtime

前のセクションにも示されているように、既定の PHP バージョン、既定の構成、および有効な拡張機能を確認するには、 phpinfo()を呼び出すスクリプトをデプロイします。As noted in the previous section, the best way to see the default PHP version, its default configuration, and the enabled extensions is to deploy a script that calls phpinfo(). 追加の拡張機能を有効にするには、次の手順に従います。To enable additional extensions, by following these steps:

Ini 設定を使用して構成します。Configure via ini settings

  1. d:\home\site ディレクトリを ext ディレクトリに追加します。Add a ext directory to the d:\home\site directory.

  2. ext ディレクトリに、.dll 拡張ファイル (php_xdebug.dll など) を配置します。Put .dll extension files in the ext directory (for example, php_xdebug.dll). 拡張機能は、PHP の既定バージョンとの互換性があり、VC9 および非スレッドセーフ (nts) 互換であることを確認してください。Make sure that the extensions are compatible with default version of PHP and are VC9 and non-thread-safe (nts) compatible.

  3. アプリの設定 (キー PHP_INI_SCAN_DIR、値 d:\home\site\ini) をアプリに追加するAdd an App Setting to your app with the key PHP_INI_SCAN_DIR and value d:\home\site\ini

  4. ini ファイルを extensions.ini と呼ばれる d:\home\site\ini に作成します。Create an ini file in d:\home\site\ini called extensions.ini.

  5. php.ini ファイルで使用するものと同じ構文を使用して、構成設定を extensions.ini ファイルに追加します。Add configuration settings to the extensions.ini file using the same syntax you would use in a php.ini file. たとえば、MongoDB や XDebug 拡張機能を有効にする場合、 extensions.ini ファイルには次のテキストが含まれます。For example, if you wanted to enable the MongoDB and XDebug extensions, your extensions.ini file would contain this text:

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

アプリ設定の構成Configure via App Setting

  1. ディレクトリを bin ディレクトリに追加します。Add a bin directory to the root directory.
  2. bin ディレクトリに、.dll 拡張ファイル (php_xdebug.dll など) を配置します。Put .dll extension files in the bin directory (for example, php_xdebug.dll). 拡張機能は、PHP の既定バージョンとの互換性があり、VC9 および非スレッドセーフ (nts) 互換であることを確認してください。Make sure that the extensions are compatible with default version of PHP and are VC9 and non-thread-safe (nts) compatible.
  3. アプリをデプロイします。Deploy your app.
  4. Azure portal で目的のアプリに移動し、 [設定] セクションの下にある [構成] をクリックします。Browse to your app in the Azure portal and click on the Configuration located below Settings section.
  5. [構成] ブレードから [アプリケーション設定] を選択します。From the Configuration blade, select Application Settings.
  6. [アプリケーション設定] セクションの [+ 新しいアプリケーション設定] をクリックし、PHP_EXTENSIONS キーを作成します。In the Application settings section, click on + New application setting and create a PHP_EXTENSIONS key. このキーの値は、Web サイト ルート (bin\your-ext-file) への相対パスになります。The value for this key would be a path relative to website root: bin\your-ext-file.
  7. 一番下にある [更新] ボタンをクリックし、 [アプリケーション設定] タブの上の [保存] をクリックします。Click the Update button at the bottom then click Save above the Application settings tab.

Zend 拡張機能も、PHP_ZENDEXTENSIONS キーを使用することによってサポートされます。Zend extensions are also supported by using a PHP_ZENDEXTENSIONS key. 複数の拡張機能を有効にするには、複数の .dll ファイルをコンマで区切って指定します。To enable multiple extensions, include a comma-separated list of .dll files for the app setting value.

方法:カスタムの PHP ランタイムを使用するHow to: Use a custom PHP runtime

App Service では、既定の PHP ランタイムを使用する代わりに、指定された PHP ランタイムを使用して PHP スクリプトを実行することができます。Instead of the default PHP runtime, App Service can use a PHP runtime that you provide to execute PHP scripts. 指定するランタイムは、同様に指定する php.ini ファイルによって構成できます。The runtime that you provide can be configured by a php.ini file that you also provide. カスタムの PHP ランタイムを App Service で使用するには、次の手順に従います。To use a custom PHP runtime with App Service, following these steps.

  1. 非スレッドセーフおよび VC9 または VC11 互換バージョンの Windows 用 PHP を入手します。Obtain a non-thread-safe, VC9 or VC11 compatible version of PHP for Windows. Windows 用 PHP の最近のリリースは、https://windows.php.net/download/ をご覧ください。Recent releases of PHP for Windows can be found here: https://windows.php.net/download/. 以前のリリースは、アーカイブ (https://windows.php.net/downloads/releases/archives/) にあります。Older releases can be found in the archive here: https://windows.php.net/downloads/releases/archives/.
  2. 使用するランタイム用に php.ini ファイルを変更します。Modify the php.ini file for your runtime. システム レベルのみのディレクティブである構成設定は、App Service では無視されます。Any configuration settings that are system-level-only directives are ignored by App Service. (システム レベルのみのディレクティブについては、php.ini ディレクティブの一覧を参照してください)。(For information about system-level-only directives, see List of php.ini directives).
  3. また、PHP ランタイムに拡張機能を追加して、これらを php.ini ファイル内で有効にすることもできます。Optionally, add extensions to your PHP runtime and enable them in the php.ini file.
  4. bin ディレクトリをルート ディレクトリに追加し、その中に、PHP ランタイムが含まれているディレクトリ (bin\php など) を配置します。Add a bin directory to your root directory, and put the directory that contains your PHP runtime in it (for example, bin\php).
  5. アプリをデプロイします。Deploy your app.
  6. Azure portal で目的のアプリに移動し、 [構成] ブレードをクリックします。Browse to your app in the Azure portal and click on the Configuration blade.
  7. [構成] ブレードから [Path mappings](パスのマッピング) を選択します。From the Configuration blade, select Path mappings.
  8. [+ New Handler](+ 新しいハンドラー) をクリックし、拡張子フィールドに *.php を追加し、 [スクリプト プロセッサ]php-cgi.exe 実行可能ファイルのパスを追加します。Click + New Handler and add *.php to the Extension field and add the path to the php-cgi.exe executable in Script processor. アプリケーションのルートにある bin ディレクトリに PHP ランタイムを配置した場合、パスは D:\home\site\wwwroot\bin\php\php-cgi.exe になります。If you put your PHP runtime in the bin directory in the root of your application, the path is D:\home\site\wwwroot\bin\php\php-cgi.exe.
  9. 一番下の [更新] をクリックして、ハンドラー マッピングの追加を完了します。At the bottom, click Update to finish adding the handler mapping.
  10. [保存] をクリックして変更を保存します。Click Save to save changes.

方法:Azure で Composer 自動化を有効にするHow to: Enable Composer automation in Azure

既定では、PHP プロジェクトに composer.json があっても、App Service で処理されません。By default, App Service doesn't do anything with composer.json, if you have one in your PHP project. Git デプロイを使用する場合、git push で composer.json の処理を有効にするには、Composer 拡張機能を有効にします。If you use Git deployment, you can enable composer.json processing during git push by enabling the Composer extension.

  1. Microsoft Azure portal の PHP アプリのブレードで、 [ツール] > [拡張機能] をクリックします。In your PHP app's blade in the Azure portal, click Tools > Extensions.

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

  2. [追加][Composer] の順にクリックします。Click Add, then click Composer.

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

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

    [インストールされている拡張機能] ブレードに Composer 拡張機能が表示されます。The Installed extensions blade shows the Composer extension. Azure で法律条項に同意して Composer 自動化を有効にするAccept legal terms to enable Composer automation in Azure

  4. ここで、ローカル コンピューターのターミナル ウィンドウで、git addgit commitgit push をアプリに対して実行します。Now, in a terminal window on your local machine, perform git add, git commit, and git push to your app. composer.json で定義されている依存関係が Composer によってインストールされていることがわかります。Notice that Composer is installing dependencies defined in composer.json.

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

次の手順Next steps

詳細については、 PHP デベロッパー センターを参照してください。For more information, see the PHP Developer Center.