希望能帮到你。我正在运行 Linux Ubunto 22.04 和 PHP8.1。
我按照此页面安装了 sqlsrv 驱动程序:加载适用于 SQL Server 的 PHP 的 Microsoft 驱动程序
我仍然在 PDO 上收到“无法找到驱动程序”错误消息(“sqlsrv:server=
我必须通过下载预构建的驱动程序(软件包 Ubuntu2204-8.1)来安装驱动程序。我将驱动程序文件复制到 /usr/lib/php/20210902',基于: php -i | grep 扩展名目录
文件“10-pdo.ini”已存在于 /etc/php/8.1/apache2/conf.d/ 中。
我按照指示创建了一个新文件“30-pdo-sqlsrv”,链接到“extension=php_pdo_sqlsrv_82_nts.so”。
我将以下内容添加到 php.ini 文件的底部:extension=php_sqlsrv_81_nts.so(我通过检查 phpinfo:/etc/php/8.1/apache2/php.ini 中的路径来检查是否编辑了正确的 php.ini 文件) ini)
我已经重新启动了我的服务器('sudo service apache2 restart'),并列出了我的 PHP 模块('php -m')。该列表显示,amonsgt 其他:PDO 和 pdo_sqlsrv。
PHPINFO 列出以下内容: 磷酸二氢钾 PDO 支持已启用 PDO 驱动程序 mysql pdo_mysql 已启用 MySQL 的 PDO 驱动程序 客户端API版本 mysqlnd 8.1.2-1ubuntu2.14 指令本地值主值 pdo_mysql.default_socket /var/run/mysqld/mysqld.sock /var/run/mysqld/mysqld.sock
我看不到任何有关 pdo_sqlsrv 的信息
我创建了一些代码来测试连接:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli'))
{
echo '!!We don\'t have mysqli!!!'. "<br>";
}
else
{
echo 'msyqli function exists.'. "<br>";
}
$mysqli = null;
if (!extension_loaded('pdo'))
{
echo 'We don\'t have PDO!!!'. "<br>";
}
else
{
echo 'PDO extension loaded.'. "<br>";
}
// pdo_sqlsrv pdo_sqlsrv
if (!function_exists('pdo_sqlsrv'))
{
echo '!!pdo_sqlsrv does not exist!!!'. "<br>";
}
else
{
echo 'pdo_sqlsrv extension exists.'. "<br>";
}
if (!extension_loaded('pdo_sqlsrv'))
{
echo '!!pdo_sqlsrv not loaded!!!'. "<br>";
}
else
{
echo 'pdo_sqlsrv extension loaded.'. "<br>";
}
try
{
$connection = new PDO("sqlsrv:server=$servername;Database=$database", $user, $password);
}
catch (PDOException $e)
{
echo 'PDO Connection failed: ' . $e->getMessage(). "<br>";
}
我的代码输出以下内容:
任何人都可以指出我可能错过的东西吗?为什么这不起作用?我的尝试是不是找错了方向?
我最终重新安装了 sqlsrv 的驱动程序。