【问题标题】:Enable PHP Extension (php_odbc.dll) on Azure在 Azure 上启用 PHP 扩展 (php_odbc.dll)
【发布时间】:2020-01-20 19:35:48
【问题描述】:

我已开始使用 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 ext? PHP版本是7.3

【问题讨论】:

  • 您是否在 D:\home\LogFiles 下的应用程序日志中看到任何错误?此外,该 dll 必须是非线程安全的、VC9 或 VC11 兼容的 PHP for Windows 版本。

标签: php azure odbc


【解决方案1】:

我看到您正在使用 Azure WebApp for Windows 来部署您的 PHP 应用程序,通过 php_odbc.dll 连接到 Azure SQL 数据库。

据我所知,Windows 的 Azure WebApp 已经安装了多个版本的 PHP 运行时,其中包含许多扩展,其中包括 PHP 7.3,如下图 D:\Program Files (x86)\PHP 路径下,我通过 Kudo 检查了 php_odbc.dll 是否存在控制台https://<your webapp name>.scm.azurewebsites.net/DebugConsole

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

如上图,可以看到php_odbc没有在php.ini中声明,所以默认没有开启。而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 页面。

【讨论】:

  • 这非常有效。谢谢你。我不得不用正确的扩展名修改我的ini文件;扩展=php_odbc
  • @NickKester 很高兴听到这个消息。你能标记我的答案吗?谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 2022-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多