Php无法识别PDO_DBLIB驱动程序


Php does not recognize PDO_DBLIB driver

所以我正在编写一些代码,以便访问Microsft SQL Server。我正在写的代码在一台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中被注释掉了,因此我很困惑。

有人能给我指引正确的方向吗?

编辑:我在这里关注了@jap1968的答案,但我被困在了现在的位置。

我发现了为什么这不起作用。我使用xampp安装了灯组。所以我在获取额外的模块时遇到了麻烦。

为了修复它,我重新安装了apache服务器(httpd)、mysql(MariaDB)和php,然后按照@jap1968的回答添加了我需要的驱动程序。

安装驱动程序后,默认情况下,在CentOS仅使用控制台启用MS SQL Server连接。因此,当我使用浏览器访问脚本时,我收到一条错误消息,说服务器不可用。

要通过你需要使用的浏览器访问(我用root权限运行了这个,也可能需要几秒钟):

# setsebool -P httpd_can_network_connect=1