我正在尝试使用 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 连接,您的环境如下。
- PHP 7.4,您似乎是通过手动编译安装的 v7.4,请确保您已将其安装到
/usr/bin
或/usr/local/bin
> 或其他系统路径。 - Linux 服务器,但我不知道您使用的是哪个 Linux 发行版,所以我假设是 Ubuntu/Debian。
接下来首先需要引用PHP Version Support
部分查看官方文档Microsoft PHP Drivers for SQL Server Support Matrix
了解PHP v7.4适用于Azure SQL Database的PHP PDO驱动程序的版本,如下图。
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
并移至页面底部,如下图。
当然,您可以根据需要下载软件包,但我认为简单的方法是通过 pecl
安装 sqlsrv
和 pdo_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/