php - 连接到 SQL Server.PDOException 对象时出错 (Azure)

标签 php azure

我正在尝试使用 PHP 连接到我的 Azure SQL 数据库,该数据库由我的其他服务器每晚 00:00 通过 cronjob 运行。当它运行时在日志中显示此错误:

 Error connecting to SQL Server.PDOException Object
(
    [message:protected] => could not find driver
    [string:Exception:private] => 
    [code:protected] => 0
    [file:protected] => /home3/nappuntx/public_html/modifiche/export.php
    [line:protected] => 73
    [trace:Exception:private] => Array
        (
            [0] => Array
                (
                    [file] => /home3/nappuntx/public_html/modifiche/export.php
                    [line] => 73
                    [function] => __construct
                    [class] => PDO
                    [type] => ->
                    [args] => Array
                        (
                            [0] => sqlsrv:server = tcp:prgsophie.database.windows.net,1433; Database = test_db
                            [1] => userTest
                            [2] => pswtest
                        )

                )

        )

    [previous:Exception:private] => 
    [errorInfo] => 
)
1

正如这里提到的:https://learn.microsoft.com/it-it/sql/connect/php/microsoft-php-driver-for-sql-server?redirectedfrom=MSDN&view=sql-server-ver15 我应该在 Linux 服务器中安装 PDO 驱动程序吗?我不确定,因为我读过这里:https://www.php.net/manual/en/pdo.installation.php “从 PHP 5.1.0 开始,PDO 和 PDO_SQLITE 驱动程序默认启用。您可能需要为您选择的数据库启用 PDO 驱动程序;请查阅特定于数据库的 PDO 驱动程序的文档以了解更多信息。” 从理论上讲它已经包含在我的 PHP 驱动程序中。我在我的 Linux Red Hat 服务器上使用 PHP 版本 7.2.26... 等待支持,谢谢。

最佳答案

让我先重复一下您的需求。我看到您尝试使用 PHP PDO 连接 Azure SQL 数据库,但错误信息显示没有 PHP 驱动程序支持 SQL Azure 连接,您的环境如下。

  1. PHP 7.4,您似乎是通过手动编译安装的 v7.4,请确保您已将其安装到 /usr/bin/usr/local/bin > 或其他系统路径。
  2. Linux 服务器,但我不知道您使用的是哪个 Linux 发行版,所以我假设是 Ubuntu/Debian。

接下来首先需要引用PHP Version Support部分查看官方文档Microsoft PHP Drivers for SQL Server Support Matrix了解PHP v7.4适用于Azure SQL Database的PHP PDO驱动程序的版本,如下图。

enter image description here

PHP 7.4似乎没有版本,但最新版本5.6是唯一的选择。

然后,您需要移至Download the Microsoft Drivers for PHP for SQL Server点击链接Microsoft Drivers 5.6 for PHP for SQL Server对于 Linux 和 macOS,它将重定向到其 GitHub 发布页面 Production Release for the PHP drivers Version 5.6.0 for SQL Server并移至页面底部,如下图。

enter image description here

当然,您可以根据需要下载软件包,但我认为简单的方法是通过 pecl 安装 sqlsrvpdo_sqlsrv,首先是在 Ubuntu/Debian Linux 上通过 sudo apt install php-pear 准备好 pecl,然后执行以下操作。

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

现在,我想你可以再次尝试你的 PHP 脚本,如果你使用过它,可以先重新启动 Apache/Nginx。

<小时/>

更新:在RHEL上使用PHP 7.2,我建议请引用官方教程Create PHP apps using SQL Server on RHEL了解详细的一步一步操作。

关于php - 连接到 SQL Server.PDOException 对象时出错 (Azure),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59936735/

相关文章:

python - Azure 事件中心如何获取最新消息

Azure API 管理入站规则从基础继承

PHP crypt 和 salt - 请详细说明

php - 查询在 mysqlyog 查询窗口中有效,但在 php 脚本中无效?

php - 使用 php/javascript 跟踪用户并禁止多个窗口/选项卡

Azure 媒体服务直播/点播

azure - Azure 应用服务和 .NET Core 3.1 中长时间运行计算的合适解决方案?

javascript - 由于 jQuery 问题,实现 Disqus 插件时出现问题

php - 如何借助 PHP 在 MySQL 数据库中执行搜索操作?

Azure SQL 数据库更新性能