前期准备工作:
$ sudo yum install php-pear php-devel zlib zlib-devel bc libaio glibc
$ sudo yum groupinstall "Development Tools"
因为扩展还是需要重新编译,所以对编译器也进行了,更新。
yum install gcc-c++
yum install gcc-g77
官网下载地址:
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
下载文件:
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
php扩展文件下载:
http://pecl.php.net/package/PDO_OCI PDO_OCI-1.0.tgz Oracle的PDO接口 (可不安装)
http://pecl.php.net/package/oci8 oci8-2.0.8.tgz Oracle扩展
安装:
安装Oraclecient
技巧:
rpm -qpl 可以查看rpm包会在哪些路径安装文件
1.安装rpm包
rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
以下几条命令仅供参考:
rpm -qa | grep oracle //查看oracle是否安装
rpm -qa //查看所有已安装的人rpm包
rpm -e oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm //卸载已安装的rpm包
rpm -ivh --force oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm //强制安装rpm包
2、配置
修改/etc/ld.so.conf 或在ld.so.conf.d文件夹下添加oracle-x86_64.conf文件,写入安装oracle客户端的lib路径:
#vi /etc/ld.so.conf
/usr/lib/oracle/11.2/client64/lib/ //加入此行,保存退出
或者
echo '/usr/lib/oracle/11.2/client64/lib/' > /etc/ld.so.conf.d/oracle-x86_64.conf
64位系统需要创建32位的软链接(这里可能是一个遗留bug,不然后面编译会出问题)
ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client
定义环境变量
vi etc/profile
加入以下几行
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64:$LD_LIBRARY_PATH
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
命令行输入以下语句使环境配置立即生效
#source /etc/profile
安装oci8
whereis phpize
whereis php-config
记录这两个已安装php的位置
tar -xvf oci8-2.0.8.tgz
cd oci8-2.0.8.tgz
/use/bin/phpize
./configure --with-php-config=/usr/bin/php-config --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
make
make install
在/etc/php.d目录下增加配置文件20-oci8.ini
extension=oci8.so
用下面命令查看是否成功:
php -i | grep oci8
验证
$conn = oci_connect('username','password','(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = serviceName)
)
)');
var_dump($conn);