PHP4 & ORACLE8i & NES3.6 for Solaris2.6編譯和遠端連線指南(轉)

subid發表於2007-08-12
PHP4 & ORACLE8i & NES3.6 for Solaris2.6編譯和遠端連線指南[@more@]在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老家下載最新的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周的時間,寫出來,供參考。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10796304/viewspace-952529/,如需轉載,請註明出處,否則將追究法律責任。

相關文章