在 Azure 应用服务 Web 应用中配置 PHP

简介

本指南演示如何执行以下操作:在 Azure 应用服务 中配置 Web 应用的内置 PHP 运行时,提供自定义 PHP 运行时,并启用扩展。 若要使用应用服务,请注册 试用版。 要充分利用本指南,应先在应用服务中创建一个 PHP Web 应用。

Note

尽管本文中指的是 Web 应用,但内容同样适用于 API 应用和移动应用。

如何:更改内置 PHP 版本

默认情况下,将安装 PHP 5.6 并且在创建应用服务 Web 应用时立即可用。 查看可用发行版、其默认配置以及已启用的扩展的最佳方式是部署一个调用 phpinfo() 函数的脚本。

PHP 7.0 和 PHP 7.2 也可用,但它们在默认情况下不启用。 若要更新 PHP 版本,请使用下列方法之一:

Azure 门户

  1. Azure 门户中浏览到 Web 应用,然后单击“设置”按钮。

    Web 应用设置

  2. 在“设置”边栏选项卡中选择“应用程序设置”,并选择新的 PHP 版本。

    应用程序设置

  3. 单击“Web 应用设置”边栏选项卡顶部的“保存”按钮。

    保存配置设置

Azure PowerShell (Windows)

  1. 打开 Azure PowerShell 并登录到帐户:

     PS C:\> Login-AzureRmAccount -EnvironmentName AzureChinaCloud
    
  2. 设置 Web 应用的 PHP 版本。

     PS C:\> Set-AzureWebsite -PhpVersion {5.6 | 7.0 | 7.2} -Name {app-name}
    
  3. 现已设置 PHP 版本。 可以确认这些设置:

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

Azure CLI 2.0(Linux、Mac、Windows)

若要使用 Azure 命令行接口,必须已在计算机上安装 Azure CLI 2.0

  1. 打开终端,并登录到帐户。

    az cloud set -n AzureChinaCloud az login

  2. 检查受支持运行时的列表。

     az webapp list-runtimes | grep php
    
  3. 设置 Web 应用的 PHP 版本。

     az webapp config set --php-version {5.6 | 7.0 | 7.1 | 7.2} --name {app-name} --resource-group {resource-group-name}
    
  4. 现已设置 PHP 版本。 可以确认这些设置:

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

Note

在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行 az cloud set -n AzureChinaCloud 来改变云环境。如果想切回国际版 Azure,请再次运行 az cloud set -n AzureCloud

如何:更改内置 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 分钟,则 .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 应用。 (需要进行重新启动,因为 PHP 读取 .user.ini 文件的频率受 user_ini.cache_ttl 设置的约束,该设置是一个系统级别设置且默认值为 300 秒(5 分钟)。 重新启动 Web 应用会强制 PHP 读取 .user.ini 文件中的新设置。)

作为使用 .user.ini 文件的替代方法,可以在脚本中使用 ini_set() 函数来设置不是系统级别指令的配置选项。

更改 PHP_INI_SYSTEM 配置设置

  1. 向 Web 应用添加一个键为 PHP_INI_SCAN_DIR 且值为 d:\home\site\ini 的应用设置
  2. 使用 Kudu 控制器 (http://<site-name>.scm.azurewebsite.net) 在 d:\home\site\ini 目录中创建一个 settings.ini 文件。
  3. 使用要在 php.ini 文件中使用的语法,将配置设置添加到 settings.ini 文件。 例如,如果希望将 curl.cainfo 设置指向 *.crt 文件并将“wincache.maxfilesize”设置为 512K,则 settings.ini 文件应包含以下文本:

     ; Example Settings
     curl.cainfo="%ProgramFiles(x86)%\Git\bin\curl-ca-bundle.crt"
     wincache.maxfilesize=512
    
  4. 重启 Web 应用以重载更改。

如何:在默认 PHP 运行时中启用扩展

如上一部分所述,查看默认 PHP 版本、其默认配置以及已启用的扩展的最佳方式是部署一个调用 phpinfo() 的脚本。 若要启用其他扩展,请执行下列步骤:

通过 ini 设置进行配置

  1. ext 目录添加到 d:\home\site 目录。
  2. .dll 扩展文件置于 ext 目录中(例如 php_xdebug.dll)。 确保扩展与默认版本的 PHP兼容,并且是 VC9 版本且与非线程安全 (nts) 兼容。
  3. 向 Web 应用添加一个键为 PHP_INI_SCAN_DIR 且值为 d:\home\site\ini 的应用设置
  4. d:\home\site\ini 中创建名为 extensions.iniini 文件。
  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. .dll 扩展文件置于 bin 目录中(例如 php_xdebug.dll)。 确保扩展与默认版本的 PHP兼容,并且是 VC9 版本且与非线程安全 (nts) 兼容。
  3. 部署 Web 应用。
  4. 在 Azure 门户中浏览到 Web 应用,然后单击“设置”按钮。

    Web 应用设置

  5. 在“设置”边栏选项卡中选择“应用程序设置”,并滚动到“应用设置”部分。

  6. 在“应用设置”部分中,创建 PHP_EXTENSIONS 键。 此键的值将是相对于网站根目录的一个路径:bin\your-ext-file

    启用应用程序设置中的扩展

  7. 单击“Web 应用设置”边栏选项卡顶部的“保存”按钮。

    保存配置设置

通过使用 PHP_ZENDEXTENSIONS 键,还可以支持 Zend 扩展。 若要启用多个扩展,请包括应用设置值的 .dll 文件的逗号分隔列表。

如何:使用自定义 PHP 运行时

应用服务 Web 应用可以使用提供的 PHP 运行时(而非默认 PHP 运行时)来执行 PHP 脚本。 提供的运行时可由 php.ini 文件(也是你提供的)配置。 若要在 Web 应用中使用自定义 PHP 运行时,请执行下列步骤。

  1. 获取非线程安全、VC9 或 VC11 兼容版本的 PHP for Windows。 可在此处找到 PHP for Windows 最新版本:http://windows.php.net/download/。 可在此处的存档中找到旧版本:http://windows.php.net/downloads/releases/archives/
  2. 修改运行时的 php.ini 文件。 Web 应用将忽略作为任何仅在系统级别使用的指令的配置设置。 (有关仅在系统级别使用的指令的信息,请参阅 php.ini 指令的列表)。
  3. (可选)将扩展添加到 PHP 运行时并在 php.ini 文件中启用这些扩展。
  4. bin 目录添加到根目录,并将包含 PHP 运行时的目录置于该目录中(例如 bin\php)。
  5. 部署 Web 应用。
  6. 在 Azure 门户中浏览到相应的 Web 应用,并单击“设置”按钮。

    Web 应用设置

  7. 从“设置”边栏选项卡选择“应用程序设置”并滚动到“处理程序映射”部分。 将 *.php 添加到扩展字段,并将路径添加到 php-cgi.exe 可执行文件。 如果将 PHP 运行时放在应用程序根目录中的 bin 目录下,路径将为 D:\home\site\wwwroot\bin\php\php-cgi.exe

    指定处理程序映射中的处理程序

  8. 单击“Web 应用设置”边栏选项卡顶部的“保存”按钮。

    保存配置设置

如何:在 Azure 中启用编辑器自动化

默认情况下,如果 PHP 项目中有 composer.json,则应用服务与其不相关。 如果使用 Git 部署,则可以通过在 git push 期间启用编辑器扩展来启用 composer.json 处理。

  1. Azure 门户中,在 PHP Web 应用的边栏选项卡中,单击“工具” > “扩展”。

    Azure 门户设置边栏选项卡,用于在 Azure 中启用编辑器自动化

  2. 单击“添加”,并单击“编辑器”。

    添加编辑器扩展,以在 Azure 中启用编辑器自动化

  3. 单击“确定” 接受法律条款。 再次单击“确定” 以添加该扩展。

    “已安装扩展”边栏选项卡将显示编辑器扩展。

    接受法律条款以在 Azure 中启用编辑器自动化

  4. 现在,在本地计算机上的终端窗口中,对 Web 应用执行 git addgit commitgit push。 请注意,编辑器正在安装在 composer.json 中定义的依赖项。

    在 Azure 中使用编辑器自动化的 Git 部署

后续步骤

有关详细信息,请参阅 PHP 开发人员中心