首页 > 解决方案 > 难以将其他扩展加载到 Azure 上的 php 实例中

问题描述

尝试将一个新扩展加载到 Azure 上的 php 实例。在阅读了几篇文章和教程后,我觉得我已经正确设置了一切。除了添加 dll,我还告诉文件更改包含/目录的位置。此外,我已经为应用程序尝试了 PHP7.2 和 7.3。

该更改有效,因此正在读取文件。但是 .dll 并没有与 phpinfo 一起显示,也没有显示所有已加载扩展的转储。我正在使用的 .ini 文件还为包含目录指定了一个新位置,这表明该文件正在被正确读取。但这不适用于 dll,而且我不知道我使用了错误版本的 dll,配置不佳或其他原因。

这是我第一次使用 Azure 进行牛仔竞技表演,所以到目前为止这是一个陡峭的学习曲线。

我已经尝试了多种细节变化,但还没有任何效果。目前,我有一个带有“PHP_INI_SCAN_DIR”的应用程序设置,它指向 d:\home\site\ext 的 D 驱动器中的目录。

我在 ini 目录中还有另一个用于实际扩展的 .ini 文件。其中唯一的一行指向 dll 位置 - zend_extension="d:\home\sites\ext\php_xdebug-2.7.2-7.2-vc15-nts.dll"

路径是正确的,据我所知,一切都是正确的 - 但扩展程序不会加载。我已经更改了位置,更改了文件名,更改了文件的构建版本,使用了“zend_extension”,并且只是简单的“扩展”,结果相似。也使用 32 位 nts 扩展。

没有看到错误消息 - 无论是在 Azure 日志中的屏幕上。我希望在使用 phpinfo() 的 wddx 之后将 xdebug 视为一个单独的部分,但没有显示任何内容。

任何帮助将不胜感激。提前致谢。

标签: phpazureazure-web-app-service

解决方案


听起来您已经阅读了官方文档的相关部分Configure PHP in Azure App Service

但是,我认为有一些重要的点是需要注意的。

  1. 在部分How to: Change the built-in PHP configurations中,请注意以下步骤。]
  • 将 .user.ini 文件添加到您的根目录。

  • 使用您在 php.ini 文件中使用的相同语法将配置设置添加到 .user.ini 文件。

  • 重新启动应用程序。(重启是必要的,因为 PHP 读取 .user.ini 文件的频率由 user_ini.cache_ttl 设置控制,这是一个系统级设置,默认为 300 秒(5 分钟)。重启应用程序会强制 PHP 读取.user.ini 文件中的新设置。)

  • 使用键 PHP_INI_SCAN_DIR 和值 d:\home\site\ini 向您的应用添加应用设置

  • 使用 Kudu 控制台 (http://.scm.azurewebsite.net) 在 d:\home\site\ini 目录中创建一个 settings.ini 文件。

  • 使用您在 php.ini 文件中使用的相同语法将配置设置添加到 settings.ini 文件。

  • 要重新加载更改,请重新启动您的应用程序。

因此,重要的是在正确的路径中创建.user.inisettings.ini文件,并重新启动您的应用程序以重新加载更改。

  1. 在 和 部分How to: Enable extensions in the default PHP runtimeHow to: Use a custom PHP runtime,为了兼容性,请使用具有VC9和非线程安全 (nts) 兼容版本的扩展,而不是VC15
  • 将 .dll 扩展文件放在 ext 目录中(例如 php_xdebug.dll)。确保扩展与 PHP 的默认版本兼容,并且与 VC9 和非线程安全 (nts) 兼容。

  • 获取适用于 Windows 的非线程安全、VC9 或 VC11 兼容的 PHP 版本。可以在此处找到最新版本的 PHP for Windows: https ://windows.php.net/download/ 。旧版本可以在此处的存档中找到:https ://windows.php.net/downloads/releases/archives/ 。

希望能帮助到你。


推荐阅读