我需要在我的本地主机 (Ubuntu) 上为 PHP 安装 PDO_OCI。我不是 Linux 软件包/依赖项方面的专家,所以如果我的想法有误,请纠正我。当我尝试使用 pecl ( sudo pecl install pdo_oci
) 时,它显示:
pear/PDO_OCI requires PHP extension "pdo" (version >= 1.0)
但相信 PDO 已安装(ls -la /usr/lib/php5/20121212/ | grep -c pdo.so
显示 1)。我在网上找到了一个教程来自己构建 pdo_oci(http://bencornwell.com/112/) 所以我跟着做了,经过一番努力才获得pdo_oci.so
。不幸的是,它没有加载并显示以下消息:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/pdo_oci.so' - /usr/lib/php5/20121212/pdo_oci.so: undefined symbol: php_pdo_stmt_delref in Unknown on line 0
我猜想这可能是 php / pdo_oci 版本不兼容的问题,但我没有知识和经验来知道如何处理这种情况。
我该怎么做才能让它工作?
我的系统信息:
Ubuntu 14.04.1 LTS
PHP 5.5.9-1ubuntu4.5 (cli)(构建于:2014 年 10 月 29 日 11:59:10)
答案1
我相信我自己处理了这个问题。有两件事我需要更改。1
. pdo_oci.so 在 pdo.so 之前加载。我更改了顺序,错误消息也已修改。2
. 我直接从源代码编译了 pdo_oci,以适应我的 php 版本(我遵循了以下说明:http://blog.appwhoosh.com/install-pdo_oci-oci8-extensions-for-ubuntu-14-10/)。
现在扩展已完美运行。
答案2
安装 Oracle 驱动程序后,您可以使用此这节课在这里然后你只需要改变你的 PDO 连接,例如
$pdo = new PDO("oci:dbname=mydatabase;charset=utf8", "user", "password");
到
$pdo = new PDOOCI\PDO("mydatabase", "user", "password");
其余部分的工作方式与使用 PDO 对象完全相同。