当前位置:Linux教程 - Oracle - PHP4 & ORACLE8i & NES3.6 for Solaris2.6编译和远程

PHP4 & ORACLE8i & NES3.6 for Solaris2.6编译和远程

在oracle server 上安装oracle8i

安装oracle8i时要选择us7ascii字符集才能支持中文,我尝试过gb2312,weiso88
89pi等字符集,结果php从oracle取得的汉字都是问号,也尝试过gbk编码,结果
问题更古怪,ocilogon报告ORA-03106错误,令人摸不着头脑。

然后在web server 上安装oracle 8i的client端,可以用netec来配置客户端,也
可以直接从oracle server端把tnsnames.ora用ftp传过来,运行tnsping 来测试
是否连同oracle server,最好是用sqlplus来登陆一下,格式是:scott@oracle_
service_name/tiger。

从php老家http://www.php.net下载最新的php4.0.1pl2版。
在web server上安装好gcc和gmake编译环境。

编译php4的参数如下:

./configure --enable-experimental-zts --with-mysql=no
--with-nsapi=/usr/netscape/suitespot/
--with-oracle=/data/oracle/app/8.1.5
--with-oci8=/data/oracle/app/8.1.5
--enable-libgcc --enable-sigchild

其中的/usr/netscape/suitespot/是web server上的nes的安装路径,/data/ora
cle/app/8.1.5是web server上的$ORACLE_HOME环境变量。--enable-libgcc是为
了避免采用libgcc++带来的reference symbol not found的错误,--eanble-sig
child是为了避免oracle产生的僵尸进程

如果在安装oracle8 client时候,没有按照install guide上所说的在安装完成后
设置oracle的一些目录的属性,可以把nobody用户加到dba组里,保证nobody用户
对tnsnames.ora文件有存取权限,否则PHP程序将会出现ORA-12154错误。也曾经
把web server设定为以oracle用户运行,结果是无法启动。

确保ORACLE SERVER 正在运行,listener已经启动,然后就可以用PHP程序测试一
下远程连接ORACLE SERVER了。函数ocilogon的第三个参数是oracle_service_na
me,不能省略。用ora函数的格式是ora_logon(""scott@oracle_service_name"",""t
iger""),至于这是为什么,我也不知道。

以上一点东西,花了我3周的时间,写出来,供参考。