【发布时间】:2020-08-27 06:09:12
【问题描述】:
我想使用PDO_ODBC(在 Centos 7 x64 位上)运行 Microsoft Access 数据库。但不幸的是,我在页面上收到此错误:
could not find driver
首先,我通过我的 connection.php 查看问题,但我的代码似乎没有问题(在 Windows 7 x64 位上测试)。
然后我认为驱动程序尚未启用,我查看phpinfo() 页面,是的驱动程序尚未启用。
然后我进入 php.ini 以启用驱动程序。我在 php.ini 中取消注释以下行:
extension=pdo_odbc
然后我使用以下命令重新启动 apache:
# /etc/init.d/apache2 restart
之后我查看phpinfo()页面,不幸的是我设置的设置尚未启用,这是phpinfo()的屏幕截图:
phpinfo() page.
您能告诉我如何在 Linux (CentOS 7) 上启用 PDO_ODBC 吗?
更新以显示我的连接
connection.php:
<?php
$dsn = "{Microsoft Access Driver (*.mdb, *.accdb)}";
$db = "/home/www/html/cetak_absensi/uploaded/db_access/my_access_db.mdb";
$user = "";
$pass = "";
if (!file_exists($db)) {
die("File is not exists ! " . $db);
}else{
try {
$koneksi = new PDO("odbc:DRIVER=".$dsn.";charset=UTF-8; Dbq=".$db."; Uid=".$user."; Pwd=".$pass.";");
$koneksi->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "There is an error : <i>" . $e->getMessage() . "</i>";
die();
}
}
【问题讨论】:
-
Driver 和 extension 是两个不同的东西。还要检查您是否为您的网络服务器编辑了 正确
php.ini,而不是为 cli sapi 编辑的。 docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/… -
@DanielW。 :我运行了这个命令来知道 php.ini 的位置:
# php -i | grep "Loaded Configuration File"。输出为Loaded Configuration File => /etc/php/7.2/cli/php.ini。我更改了放置在输出上的 php.ini 的设置。 -
@DanielW。 : 我是 Linux 新手,我不知道如何按照文档所说的去做。我在终端运行
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo(就像文档说的那样),然后它说-bash: /etc/yum.repos.d/mssql-release.repo: No such file or directory。 -
我已经将 cli 上的 php.ini 恢复到以前的状态,然后转到 /etc/php/7.2/apache2/ini.php (正如
phpinfo()网站所说) 并取消注释extension=pdo_odbc并像上面的命令一样重新启动 apache2。再次检查phpinfo()后,mysql 的 PDO 驱动程序消失了(我也取消了对此的注释)。我上面附上的截图之类的信息已经不存在了。 -
# php -i | grep "Loaded Configuration File"提供的信息比phpinfo()可靠吗?或者也许我在某个地方错了。顺便说一句,我尝试运行sudo curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo仍然面临同样的拒绝。
标签: php linux php-7.2 pdo-odbc