Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Linux上启用PDO_ODBC?_Php_Linux_Php 7.2_Pdo Odbc - Fatal编程技术网

Php 如何在Linux上启用PDO_ODBC?

Php 如何在Linux上启用PDO_ODBC?,php,linux,php-7.2,pdo-odbc,Php,Linux,Php 7.2,Pdo Odbc,我想使用PDO_ODBC(在Centos 7 x64位上)运行Microsoft Access数据库。但不幸的是,我在页面上看到了这个错误: could not find driver 首先,我通过connection.php查找问题,但代码中似乎没有问题(在Windows7x64位上测试) 然后我想驱动程序还没有启用,我查看phpinfo()页面,是的,驱动程序还没有启用 然后进入php.ini以启用驱动程序。我在php.ini中取消注释以下行: 然后我使用以下命令重新启动apache: #

我想使用
PDO_ODBC
(在Centos 7 x64位上)运行Microsoft Access数据库。但不幸的是,我在页面上看到了这个错误:

could not find driver
首先,我通过connection.php查找问题,但代码中似乎没有问题(在Windows7x64位上测试)

然后我想驱动程序还没有启用,我查看
phpinfo()
页面,是的,驱动程序还没有启用

然后进入php.ini以启用驱动程序。我在php.ini中取消注释以下行:

然后我使用以下命令重新启动apache:

# /etc/init.d/apache2 restart
之后,我查看了
phpinfo()
页面,不幸的是,我设置的设置尚未启用,这是
phpinfo()
的屏幕截图:

您能告诉我如何在Linux(CentOS 7)上启用PDO_ODBC吗

更新以显示我的连接

connection.php:


驱动程序和扩展不是一回事

您可以在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\u ini()
URL,正确的路径显示在第一个或第二个表中。

驱动程序和扩展程序不是一回事

您可以在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\u ini()
URL,正确的路径显示在第一个或第二个表中。

驱动程序和扩展是两件不同的事情。还要检查您是否为您的Web服务器而不是cli sapi编辑了正确的
php.ini
@丹尼尔:我运行此命令以了解php.ini的位置:
#php-I | grep“Loaded Configuration File”
。输出为
加载的配置文件=>/etc/php/7.2/cli/php.ini
。我更改了输出上的php.ini设置。@DanielW:我是Linux新手,我不知道该怎么做。我跑了
curlhttps://packages.microsoft.com/config/rhel/7/prod.repo >/etc/yum.repos.d/mssql release.repo
(就像文档中说的那样),然后它说
-bash:/etc/yum.repos.d/mssql-release.repo:没有这样的文件或目录
。我已经将cli上的php.ini恢复到以前的状态,然后转到/etc/php/7.2/apache2/ini.php(正如
phpinfo()。我上面附加的屏幕截图之类的信息已经不存在了。
#php-i | grep“加载的配置文件”
提供的信息是否比
phpinfo()可靠
?或许我在某个地方出错了。顺便说一下,我试着运行了
sudo curlhttps://packages.microsoft.com/config/rhel/7/prod.repo >/etc/yum.repos.d/mssql release.repo
仍然面临相同的拒绝。驱动程序和扩展是两件不同的事情。还要检查您是否为您的Web服务编辑了正确的
php.ini
r、 而不是cli sapi的命令。@DanielW.:我运行此命令以了解php.ini的位置:
#php-I|grep“加载的配置文件”
。输出是
加载的配置文件=>/etc/php/7.2/cli/php.ini
。我更改了输出上的php.ini设置。@DanielW:我是Linux新手,我不知道文档上说的是什么。我运行了
curlhttps://packages.microsoft.com/config/rhel/7/prod.repo >/etc/yum.repos.d/mssql release.repo
(如文档所述)在终端中,然后它说
-bash:/etc/yum.repos.d/mssql-release.repo:没有这样的文件或目录
。我已将cli上的php.ini恢复到以前的状态,然后转到/etc/php/7.2/apache2/ini.php(如
phpinfo()
站点所述)并取消注释
extension=pdo_odbc
并重新启动类似上述命令的apache2。在再次检查
phpinfo()
后,mysql的pdo驱动程序消失了(我也取消了对这一个的注释)。我上面附加的屏幕截图之类的信息不再存在。这是
php-I|grep给出的信息吗“加载的配置文件”
phpinfo()可靠
?或许我在某个地方出错了。顺便说一下,我试着运行了
sudo curlhttps://packages.microsoft.com/config/rhel/7/prod.repo >/etc/yum.repos.d/mssql release.repo
仍然面临相同的拒绝。我将检查php.ini中关于PDO mysql的内容是否不再存在于列表中。关于安装Microsoft ODBC驱动程序,所有的命令应该一个接一个地运行,还是一次运行?(顺便说一下,我的curl版本错了,我的错)@DontbullingMe抱歉,我无法得到一个有效的解决方案,因为我既不使用CentOS也不使用ODBC。我想已经有关于Stackoverflow的主题,关于安装FreeTDS、unixODBC或Microsoft的ODBC。因此,我已经在Ubuntu v.18.04.1上安装了unixODBC v.2.3.4,使用此命令
#apt get install unixODBC
,然后我使用此命令重新启动apache2有限公司
# /etc/init.d/apache2 restart
<?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();
        }
    }