俺的PDO_OCI折腾记
俺的PDO_OCI折腾记 · Feb 5, 2013 clicks
装utuntu也不太顺利, 这破本不能从u盘启动!
最后从硬盘装的,因为一个路径写错,折腾了一晚上。
装完之后, 好在驱动啥的没要我操心, 唯一就是声音太小,反正上班用的,影响不大。
php是自己下的源码安装,轻车熟路,一切顺利。
安装php的oracle扩展遇到点问题,尤其是pdo_oci
给公司发的笔记本上装了给ubuntu,本来有给xp系统,但是连想都不要想的本本是不是都这样卡?
装utuntu也不太顺利, 这破本不能从u盘启动!
最后从硬盘装的,因为一个路径写错,折腾了一晚上。
装完之后, 好在驱动啥的没要我操心, 唯一就是声音太小,反正上班用的,影响不大。
php是自己下的源码安装,轻车熟路,一切顺利。
安装php的oracle扩展遇到点问题,尤其是pdo_oci。
先去甲骨文的网站 下载了instantclient-basic-linux-11.2.0.3.0.zip 和instantclient-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下问题依旧