因项目须要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路。php
1.下载Oracle客户端程序包,其中包含OCI、OCCI和JDBC-OCI等相关文件。html
1.1下载文件地址linux
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.htmlweb
根据操做系统的版本选择对应的软件,我须要的是X86_64选择sql
Instant Client for Linux x86-64数据库
1.2须要下载的文件以下:apache
oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpmcentos
oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm服务器
oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpmoracle
须要强调的一点是这里须要注册一个oracle的帐户才能正常下载。
2.安装Oracle客户端程序包。
将程序包上传到服务器指定目录里
chmod +x *.rpm
#给RPM包赋执行权限
rpm -ivh oracle-instantclient11.1-basic-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-devel-11.1.0.7.0-1.x86_64.rpm oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.x86_64.rpm
#安装RPM包
echo "/usr/lib/oracle/11.1/client64/lib/" > /etc/ld.so.conf.d/oracle_client.conf
#将库路径加到默认加载中
/sbin/ldconfig
#从新加载动态连接库
3.安装OCI8的php扩展(这里指定php的安装路径为/usr/local/webserver/php)
yum install libaio
#yum安装libaio库,libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高
wget http://pecl.php.net/get/oci8-1.4.10.tgz
#下载OCI扩展
tar zxvf oci8-1.4.10.tgz
#解压
cd oci8-1.4.10
/usr/local/webserver/php/bin/phpize CFLAGS="-I/usr/lib/oracle/11.1/client64" CXXFLAGS="-I/usr/lib/oracle/11.1/client64"#使用phpize准备 PHP 外挂模块的编译环境,会根据指定的环境变量生成编译时须要的makefile,phpize是属于php-devel的内容,因此centos下只要运行yum install php-devel进行安装便可
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-oci8=/usr/lib/oracle/11.1/client64
make
make install#编译,安装
须要强调的是make的时候会报错,显示各类找不到库文件,须要对makefile文件进行修改加入oralce的运行库地址
打开makefile,寻找INCLUDE,形式以下:
INCLUDES = -I/usr/local/php/include/php -I/usr/include/oracle/10.2.0.3/client
而后在末尾加上="-I/usr/lib/oracle/11.1/client64,而后从新make就会成功了。
4.修改PHP.ini(/usr/local/webserver/php/etc/php.ini)
在extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"后增长一行:
extension = "oci8.so"
5.重启apache让OCI生效
6.在web目录下建立phpinfo.php文件在其中输入一下内容,并经过web访问
<?php
phpinfo();
?>
若是找到OCI8的部分就说明OCI安装正常了,以下图所示
接下来就能经过php访问oracle数据库了,须要注意的是php下Oracle的链接字符串
<?php
$username='***';
$passwd='***';
$protocol='TCP';
$SERVICE_NAME='***';
$ORACLE_SERVER_IP_ADDRESS='***.***.***.***';
$Port='1521';$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = $protocol)(HOST = $ORACLE_SERVER_IP_ADDRESS)(PORT = $Port)))(CONNECT_DATA=(SID=$SERVICE_NAME)))";
$conn = oci_connect($username,$passwd, $db);
PutEnv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8");
if (!$conn) {$e = oci_error();
print htmlentities($e['message']);
exit;
}else {
echo "链接oracle成功!";
return $conn;
}?>
做者: 付海军
出处:http://fuhj02.blog.51cto.com
版权:本文版权归做者和51cto共有
转载:欢迎转载,为了保存做者的创做热情,请按要求【转载】,谢谢
要求:未经做者赞成,必须保留此段声明;必须在文章中给出原文链接且保证内容完整!不然必究法律责任!
我的网站: http://www.fuhaijun.com/