您的位置:首页 > 数据库 > Oracle

centos 安装 php pdo_oci 扩展(Oracle驱动)

2011-12-31 17:48 681 查看
1、安装Oracle InstantClient

我安装的版本是11.2。需要以下两个包,可从Oracle官方下载:
oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm
oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm
下载地址:http://www.oracle.com/technetwork/topics/linuxsoft-082809.html

#rpm -qpl 可以查看rpm包会在哪些路径安装文件
[root@localhost ~]# rpm -qpl oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm
[root@localhost ~]# rpm -qpl oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm
Oracle InstantClient的安装路径是:/usr/lib/oracle/11.2/

#安装rpm包
[root@localhost ~]# rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm
[root@localhost ~]# rpm -ivh oracle-instantclient11.2-devel-11.2.0.3.0-1.i386.rpm

2、安装PDO_OCI
[root@localhost libs]# wget http://pear.php.net/get/oci8-1.4.5.tgz [root@localhost libs]# tar zxvf ./PDO_OCI-1.0.tgz 
[root@localhost libs]# cd PDO_OCI-1.0
#注意,这里做LINK是因为pdo_cli不支持oracle 11,为了骗过他继续编译,要手工处理一下。
[root@localhost PDO_OCI-1.0]# ln -s /usr/include/oracle/11.2/ /usr/include/oracle/10.2.0.1
[root@localhost PDO_OCI-1.0]# ln -s /usr/lib/oracle/11.2/ /usr/lib/oracle/10.2.0.1

#make配置,参考:./configure --help
[root@localhost PDO_OCI-1.0]# /usr/local/php/bin/phpize 
[root@localhost PDO_OCI-1.0]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-oci=instantclient,/usr,10.2.0.1
[root@localhost PDO_OCI-1.0]# make
[root@localhost PDO_OCI-1.0]# make install

#增加PHP扩展
[root@localhost PDO_OCI-1.0]# gedit /usr/local/php/etc/php.ini
   ADD: extension = "pdo_oci.so"

3、重启Nginx、PHP


[root@localhost PDO_OCI-1.0]# nginx -s stop
[root@localhost PDO_OCI-1.0]# nginx
[root@localhost PDO_OCI-1.0]#php-fpm

[root@localhost PDO_OCI-1.0]# kill -SIGINT `cat /usr/local/php/var/run/php-fpm.pid`

4、Issues
Issue A:
[root@localhost PDO_OCI-1.0]# /usr/local/php/sbin/php-fpm -t
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/pdo_oci.so' - /opt/oracle/10g/lib/libnnz10.so: cannot restore segment prot after reloc: Permission
denied in Unknown on line 0
[31-Dec-2011 16:38:12] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful

Why:

SeLinux作祟

HowTo: 
比较完美的解决方式:


[root@localhost ~]# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /opt/oracle/10g/lib/libnnz10.so

Ref:重启apache时,libphp5.so cannot restore segment prot after reloc Permission denied

不完美的解决方式:关闭SeLinux,参考以下链接:


关闭SeLinux的方法

cannot restore segment prot after reloc: Permission denied



----

参考文章:

centos安装php oci8 pdo-oci

PHP Manual:Oracle Functions (PDO_OCI)


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息