首頁 >php教程 >php手册 >php 5.1.4 通过OCI8 以及instantclient访问远程oracle 9i数据库

php 5.1.4 通过OCI8 以及instantclient访问远程oracle 9i数据库

WBOY
WBOY原創
2016-06-06 20:00:21969瀏覽

ph p 5.1.4 通过 OCI8 以及 instantclient 访问远程 oracle 9i 数据库的安装步骤 ,今天终于成功了。呵呵,开心。详见全文。。 前段时间的问题: 我现在需要在一台 WWW 服务器上安装 instant-client, 用于 PHP 与远程 oracle 9.2.0 .6 数据库的连接。 我安装

 

php 5.1.4 通过OCI8 以及instantclient访问远程oracle 9i数据库的安装步骤 ,今天终于成功了。呵呵,开心。详见全文。。

 

前段时间的问题:

我现在需要在一台WWW服务器上安装instant-client,用于PHP与远程oracle 9.2.0.6 数据库的连接。
我安装了这两个RPM包。
oracle-instantclient-basic-10.1.0.3-1.i386.rpm
oracle-instantclient-devel-10.1.0.3-1.i386.rpm

然后在PHP的编译脚本里加了 --with-oci8-instant-client=/usr/lib/oracle/10.1.0.3/client/lib 选项。

然后执行 install.sh;make;make install 一切都显得很正常。

[root@WWW-HP php-5.1.4]# cat install.sh
./configure --host=x86_64-redhat-linux --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php --with-mail --sysconfdir=/usr/local/php/etc --enable-sockets --enable-versioning --with-mysql=/usr/local/mysql --enable-memory-limit=yes --with-oci8-instant-client=/usr/lib/oracle/10.1.0.3/client/lib --enable-sigchild --with-gd=/usr/local/gd --with-freetype=/usr/local/freetype --with-ttf --with-zlib --with-png --with-jpeg --with-xml --enable-track-vars

然后将php.ini-recommended 文件拷贝到了/usr/local/php/php.ini .并放开了该文件中的extension=php_oci8.dll

重起 apache服务。 可是用去看,怎么都看不到OCI 8 enabled 那部分内容。

我查看编译时的信息,发现 OCI8 的支持是no checking for Oracle (OCI8) support... no 可是,我明明加了这个支持选项啊。。

急死人了。请大侠不吝赐教~谢谢先~

=====

问题还没有解决:

可是发现一点:如果编译的时候,不使用--witch-oci8-instant-client,而是使用--with-oci8 ,那么查看configure过程中的信息,就有

checking for Oracle (OCI8) support... yes

了。但make 过程中,将出现:

/usr/bin/ld: skipping incompatible /usr/oracle/lib/libclntsh.so when searching for -lclntsh

的错误。。

继续寻求方法中。。。。。

后来, 今天查看到一篇文章 http://ubuntuforums.org/showthread.php?t=92528 下载了 oci8-1.2.1.tgz 软件包,按照资料上的方法
进行安装终于成功。

下面是全部的详细安装过程:

环境及软件说明:
fedora 4 for X86-64 hp PC
服务器

php-5.1.4.tar.gz 下载地址:http://www.php.net

Apache/2.2.0 (Unix) mod_ssl/2.2.0 OpenSSL/ 下载地址: http://www.apache.org

oci8-1.2.1.tgz 下载地址:http://pecl.php.net/package/oci8/download/1.2.1/

instantclient-basic-linuxAMD64-10.1.0.5.0-20060519.zip
instantclient-sdk-linuxAMD64-10.1.0.5.0-20060519.zip
下载地址:
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxx86_64soft.html

本机也安装了oracle 9i client ,但由于整合不了,就采用了instantclient方式。这里,需要tnsnames.ora文件


1
)下载instantclient-basic instantclient-sdk 包,并解开放在/usr/local/instantclient10_1/目录

instantclient-basic-linuxAMD64-10.1.0.5.0-20060519.zip
instantclient-sdk-linuxAMD64-10.1.0.5.0-20060519.zip

由于oracle 网站的问题,开始无法下载这些文件, 等了一天,终于可以了。还是不用前面的那几个文件, 还是用回支持64位的软件。


2
echo /usr/local/instantclient10_1 > /etc/ld.so.conf

3)在/etc/profile 里增加如下环境变量信息:
export TNS_ADMIN=/usr/oracle/network/admin
export NLS_LANG="Simplified Chinese_China.ZHS16GBK"
export LANG=zh_CN
export LD_LIBRARY_PATH=/usr/local/instantclient10_1

并执行. /etc/profile 或退出重新进入系统。

并按照有的资料的说明,将apche.conf 文件里定义的User Group 加到dba组里。
cat /etc/group
dba:x:502:oracle,nobody

4) oci8-1.2.1.tgz /usr/local/src/目录下解包:
cd /usr/local/src/
tar xvfz oci8-1.2.1.tgz
cd oci8-1.2.1
ln -s libclntsh.so.10.1 libclntsh.so
ln -s libocci.so.10.1 libocci.so

5) 下载instantclient-basic instantclient-sdk 包,并解开放在/usr/local/instantclient10_1/目录

6)
php-5.1.4解开在/usr/local/src/php-5.1.4目录
cd /usr/local/src/
tar xvfz php-5.1.4.tar.gz

编写新的编译脚本install.sh ,内容为:

./configure --host=x86_64-redhat-linux --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php --with-mail --sysconfdir=/usr/local/php/etc --enable-sockets --enable-versioning --with-mysql=/usr/local/mysql --enable-memory-limit=yes --with-oci8=instantclient,/usr/local/instantclient10_1/ --enable-sigchild --with-gd=/usr/local/gd --with-freetype=/usr/local/freetype --with-ttf --with-zlib --with-png --with-jpeg --with-xml --enable-track-vars

注意:这里,--with-oci8=instantclient,/usr/local/instantclient10_1/ 我先按照--with-oci8=shared,instantclient,/usr/local/instantclient10_1/ shared方式安装,但在configure 过程中,会提示, --enable-versioning 不支持shared 安装方式。因此,我改用了Installing as statically compiled extension 的方式安装(区别见oci8包里的README

然后编译链接:
./install.sh
make
make install

libtool --finish /usr/local/src/php-5.1.4/libs (按照提示,运行这条命令)
没有报错,一切正常。

7cp php.ini-recommended /usr/local/php/php.ini
vi /usr/local/php/php.ini

/usr/local/php/lib/php 放到了includde_path后,可忘记把; 去掉,发现没影响啊。呵呵。后来,还是去掉了注释。
include_path = ".:/php/includes:/usr/local/php/lib/php"

(说明:如果使用shared方式安装的,需要在 php.ini 中添加extension=oci8.so 一行。而我的是静态的方式安装的,就不需要这行了。

8)然后,重起apache 服务:
/apache2/bin/apachectl restart

9
)编写php.php
phpinfo();
?>
在浏览器中访问,哈哈,可爱的OCI8 Support enabled 部分的内容,终于出现啦。。

注意:我使用 phpinfo(); ?> 页面是空白。

经过测试,PHP程序可以正常访问远程数据库啦!(2006/11/15

 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn