Php 无法识别 PDO_DBLIB 驱动程序
Php does not recognize PDO_DBLIB driver
所以我正在编写一些代码,以便我可以访问 Microsft SQL 服务器。我正在编写的代码是在 Centos 7 机器上。我已经安装了 php mysql 和 mssql 软件包,但是当我 运行
echo "<pre>", print_r(PDO::getAvailableDrivers()), "</pre>";
我得到以下输出:
Array
(
[0] => mysql
[1] => pgsql
[2] => sqlite
)
我重新启动了lampp,结果还是一样。
我还编辑了 php.ini
以包含 extension=php_mssql.so
,并重新启动 lampp,仍然得到相同的输出。
当我 运行 pdo 脚本时:
try
{
$con = new PDO("dblib:host=".$db_addr.";dbname=".$db_name.";charset=utf8", '".$db_usr."', '".$db_pass."');
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "ERROR: ". $e->getMessage();
die();
}
我总是得到:
ERROR: could not find driver
我意识到这需要在php.ini
中配置,但是输出的驱动程序在php.ini
中被注释掉了,所以我很困惑。
有人可以指导我正确的方向吗?
编辑:我在 here 中关注了@jap1968 的回答,但我卡在了现在的位置。
我找到了为什么这不起作用。我使用 xampp 安装了我的 lamp 堆栈。所以我很难获得额外的模块。
为了解决这个问题,我重新安装了 apache 服务器 (httpd)、mysql (MariaDB) 和 php,然后按照@jap1968 在 [=11 中的回答,我设法添加了我需要的驱动程序=].
安装驱动程序后,CentOS 默认仅使用控制台启用 MS SQL 服务器连接。因此,当我使用浏览器访问我的脚本时,我收到一条错误消息,指出服务器不可用。
要通过您需要使用的浏览器进行访问(我 运行 这具有 root 权限,也可能需要几秒钟):
# setsebool -P httpd_can_network_connect=1
所以我正在编写一些代码,以便我可以访问 Microsft SQL 服务器。我正在编写的代码是在 Centos 7 机器上。我已经安装了 php mysql 和 mssql 软件包,但是当我 运行
echo "<pre>", print_r(PDO::getAvailableDrivers()), "</pre>";
我得到以下输出:
Array
(
[0] => mysql
[1] => pgsql
[2] => sqlite
)
我重新启动了lampp,结果还是一样。
我还编辑了 php.ini
以包含 extension=php_mssql.so
,并重新启动 lampp,仍然得到相同的输出。
当我 运行 pdo 脚本时:
try
{
$con = new PDO("dblib:host=".$db_addr.";dbname=".$db_name.";charset=utf8", '".$db_usr."', '".$db_pass."');
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo "ERROR: ". $e->getMessage();
die();
}
我总是得到:
ERROR: could not find driver
我意识到这需要在php.ini
中配置,但是输出的驱动程序在php.ini
中被注释掉了,所以我很困惑。
有人可以指导我正确的方向吗?
编辑:我在 here 中关注了@jap1968 的回答,但我卡在了现在的位置。
我找到了为什么这不起作用。我使用 xampp 安装了我的 lamp 堆栈。所以我很难获得额外的模块。
为了解决这个问题,我重新安装了 apache 服务器 (httpd)、mysql (MariaDB) 和 php,然后按照@jap1968 在 [=11 中的回答,我设法添加了我需要的驱动程序=].
安装驱动程序后,CentOS 默认仅使用控制台启用 MS SQL 服务器连接。因此,当我使用浏览器访问我的脚本时,我收到一条错误消息,指出服务器不可用。
要通过您需要使用的浏览器进行访问(我 运行 这具有 root 权限,也可能需要几秒钟):
# setsebool -P httpd_can_network_connect=1