在 Azure 上启用 PHP 扩展 (php_odbc.dll)

Enable PHP Extension (php_odbc.dll) on Azure

我已经开始使用 Azure 并测试与 Microsoft SQL 数据库的连接。我想利用我们当前的 php_odbc.dll 扩展而不是使用 PDO 方法。

  $query = "SELECT * FROM TABLE ";          
  //perform the query 
  $result=odbc_exec($conn, $query); 

我已经执行了通过应用程序设置配置和通过 ini 设置配置添加扩展程序的步骤。这两种方式都会导致我的主索引页面抛出 500 错误。我的主要 index.php 只包括 phpinfo();用于测试的功能。

https://docs.microsoft.com/bs-latn-ba/azure/app-service/web-sites-php-configure#configure-via-app-setting

问题:如何在 Azure 上启用 php_odbc.dll 扩展? PHP 版本为 7.3

我看到您正在使用 Windows 的 Azure WebApp 通过 php_odbc.dll.

通过 Azure SQL 数据库连接部署您的 PHP 应用程序

据我所知,Windows 的 Azure WebApp 已经安装了多个版本的 PHP 运行时,其中包含许多扩展,其中包括路径 [=12= 下的 PHP 7.3 ] 如下图,我通过 Kudo 控制台 https://<your webapp name>.scm.azurewebsites.net/DebugConsole

检查了 php_odbc.dll 是否存在

然后,我移动到v7.3查看php.ini文件来检查php_odbc.dll扩展是否被启用。

如上图,可以看到php.ini中没有声明php_odbc,所以默认是不启用的。并且 Azure 规定 D:\ 下的所有文件和目录(D:\home 除外)客户不能更改,因此尝试编辑 php.ini 启用 php_odbc 会导致错误问题.

所以解决方法是参考官方文档Configure PHP in Azure App ServiceHow to: Enable extensions in the default PHP runtime部分如下图启用默认已有的扩展

默认情况下D:\home\site路径下可能没有名为ini的目录,需要自己创建,然后在其下创建一个名为extensions.ini的文件并编辑它以添加 php_odbc.

的扩展名或绝对路径
; Enable Extensions
extension=php_odbc
; Or use its absoluted path, such as for 32bit platform
; extension=D:\Program Files (x86)\PHP\v7.3\ext\php_odbc.dll

重新启动 Azure WebApp 后,您可以再次尝试 PHP 页面。