rhel6 上的 php pdo_informix - 未实现可选功能

Posted

技术标签:

【中文标题】rhel6 上的 php pdo_informix - 未实现可选功能【英文标题】:php pdo_informix on rhel6 - Optional feature not implemented 【发布时间】:2015-08-20 10:11:47 【问题描述】:

我已经配置了 pdo_informix:

[root@cc-allplus nginx]# php -i |egrep "pdo|PDO"
PDO
PDO support => enabled
PDO drivers => sqlite, sqlite2, odbc, pgsql, informix, dblib
pdo_dblib
PDO Driver for FreeTDS/Sybase DB-lib => enabled
pdo_informix
pdo_informix support => enabled
PDO_ODBC
PDO Driver for ODBC (unixODBC) => enabled
pdo_pgsql
PDO Driver for PostgreSQL => enabled
Revision =>  $Id: pdo_pgsql.c 300351 2010-06-10 12:11:19Z iliaa $
pdo_sqlite
PDO Driver for SQLite 3.x => enabled

并尝试创建连接:

try

    $dbh = new PDO ("informix:host=some.example.ru; service=50000; database=test; server=test_net; protocol=onsoctcp;DB_LOCALE=en_US.57372; CLIENT_LOCALE=en_US.57372;", "dcs_test", "********");

    catch (PDOException $e)
        echo 'Failed to execute your db connection: '. $e->getMessage().'</br>'; exit;
    

响应是:

Failed to execute your db connection: SQLSTATE=HY000, SQLSetConnectAttr: -11097 [Informix][Informix ODBC Driver]Optional feature not implemented

谷歌搜索无助于解决此问题.. 欢迎任何建议

【问题讨论】:

是否有 Informix 实现(在您的 php 版本中)? php 已重建 --with-pdo --with-pdo-informix 你检查过 phpinfo() for informix 的输出吗? 是的,它已被预先设置,并且我让 php 在控制台中加载的 pdo 库列表中显示 informix.. 省略 DB_LOCALE 和 CLIENT_LOCALE 会有什么结果? 【参考方案1】:

问题已解决。 对于那些可能在informix 或其他pdo 库中遇到同样问题的人,我想分享一下。

我的麻烦在于选择最新版本的 PDO_INFORMIX 源代码。我搜索并发现,php 5.3 需要 informix 不迟于 1.2.6 版本。

我从一篇匈牙利语文章中发现了该信息,它是整个 www.php 和 PDO_INFORMIX 之间这种不兼容的唯一帖子。

在 IBM 站点和 pdo PECL 源站点上没有任何此类信息字符串。天哪,这需要我几天时间,但我做到了!

在找到正确的版本后,我不得不重新编译 php,因为它已将 1.3.0 版本的 informix pdo 放入缓存中,并且不想使用旧版本。

希望这会有所帮助!

【讨论】:

以上是关于rhel6 上的 php pdo_informix - 未实现可选功能的主要内容,如果未能解决你的问题,请参考以下文章

原生的zfs在rhel6上的安装

RHEL8 上的 glibc sscanf 分段错误,相同的代码适用于 RHEL 5、RHEL6 和 RHEL7

Linux之RHEL6目录结构

RHEL6.1 安装 Oracle10gr2 (图文解析)

如何配置 php 以在 CentOS 上启用 pdo 并包含 mysqli?

rhel6.5搭建mantis时报错“INTERNAL APPLICATION ERROR”