如何在 Linux 上启用 PDO_ODBC?
How to enable PDO_ODBC on Linux?
我想 运行 Microsoft Access 数据库使用 PDO_ODBC
(在 Centos 7 x64 位上)。但不幸的是我在页面上收到此错误:
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();
}
}
驱动程序和扩展程序不是一回事。
您可以在 microsoft.com 网站上找到驱动程序,像这样或与您的特定版本要求类似:
您也可以尝试安装 GNU 包,例如 "FreeTDS"。
另一个问题是,您正在编辑错误的 php.ini
文件。
当运行 php -i | grep....
你在/etc/php/7.2/cli/php.ini
中执行PHP的cli
SAPI,但你真正想要的是apache SAPI php.ini,很可能位于 /etc/php/7.2/apache/php.ini
。转到您的 php_ini()
URL,正确的路径显示在第一个或第二个 table 中。
我想 运行 Microsoft Access 数据库使用 PDO_ODBC
(在 Centos 7 x64 位上)。但不幸的是我在页面上收到此错误:
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();
}
}
驱动程序和扩展程序不是一回事。
您可以在 microsoft.com 网站上找到驱动程序,像这样或与您的特定版本要求类似:
您也可以尝试安装 GNU 包,例如 "FreeTDS"。
另一个问题是,您正在编辑错误的 php.ini
文件。
当运行 php -i | grep....
你在/etc/php/7.2/cli/php.ini
中执行PHP的cli
SAPI,但你真正想要的是apache SAPI php.ini,很可能位于 /etc/php/7.2/apache/php.ini
。转到您的 php_ini()
URL,正确的路径显示在第一个或第二个 table 中。