俺的PDO_OCI折腾记

俺的PDO_OCI折腾记 · Feb 5, 2013 clicks

给公司发的笔记本上装了给ubuntu,本来有给xp系统,但是连想都不要想的本本是不是都这样卡?
装utuntu也不太顺利, 这破本不能从u盘启动!
最后从硬盘装的,因为一个路径写错,折腾了一晚上。
装完之后, 好在驱动啥的没要我操心, 唯一就是声音太小,反正上班用的,影响不大。
php是自己下的源码安装,轻车熟路,一切顺利。
安装php的oracle扩展遇到点问题,尤其是pdo_oci

给公司发的笔记本上装了给ubuntu,本来有给xp系统,但是连想都不要想的本本是不是都这样卡?

装utuntu也不太顺利, 这破本不能从u盘启动!

最后从硬盘装的,因为一个路径写错,折腾了一晚上。

装完之后, 好在驱动啥的没要我操心, 唯一就是声音太小,反正上班用的,影响不大。

php是自己下的源码安装,轻车熟路,一切顺利。

安装php的oracle扩展遇到点问题,尤其是pdo_oci。

先去甲骨文的网站 下载了instantclient-basic-linux-11.2.0.3.0.zipinstantclient-sdk-linux-11.2.0.3.0.zip 解压后放到/usr/local/lib/instantclient_11_2

然后加到环境变量中去:

编辑/etc/environment

加入几行

LD_LIBRARY_PATH="/usr/local/lib/instantclient_11_2"
TNS_ADMIN="/usr/local/lib/instantclient_11_2"
ORACLE_BASE="/usr/local/lib/instantclient_11_2"
ORACLE_HOME=$ORACLE_BASE

然后source /etc/enviroment 是文件生效。

 

接下来走了弯路,用了pecl安装。后来看了这里https://bugs.php.net/bug.php?id=41289 才知道pecl里的是很旧的了

于是直接来到php的源码路姆,定位 ext/php_oci

sudo /usr/php/bin/phpize
./configure --with-pdo-oci=instantclient,/usr/local/lib/instantclient_11_2

结果报错,看了下源代码,竟然只支持11.1以前的版本。

后来google到这个网页https://forums.oracle.com/forums/thread.jspa?threadID=1042973, 看了第一个回复,把参数改成

--with-pdo-oci=instantclient,/usr/local/lib/instantclient_11_2,11.1

OK,成功!

 

========================== 后记============================

后来运行php-fpm后发现还有问题,连不上orale,但是在cli模式下却可以。问题可能出在权限或者路进上里。

1.  环境变量。

在/etc/enviorment里面加上了

TNS_ADMIN=/usr/local/lib/instantclient_11_2
ORACLE_BASE=/usr/local/lib/instantclient_11_2
ORACLE_HOME=$ORACLE_BASE
LD_LIBRARY_PATH=/usr/local/lib/instantclient_11_2

一样没有效果。

2. 权限问题

运行ldd ./sqlplus会出现有几个库找到,这个问题终于在 http://dba.stackexchange.com/questions/12005/oracle11-2g-post-installation-problem-on-oracle-linux-kernel 找到解决方法了

现在可以用sqlplus连接数据库里,但是在php-fpm下问题依旧