欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

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

程序员文章站 2022-05-25 09:17:39
...

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