[筆記]apache2.0.x+php5.1.6+oracle(9i, 10g remote) on Windows

花了好多時間終於搞定了。用慣 web hosting 或 FreeBSD 萬能 make install 之後,很久沒自己在機器上對付各種設定問題啦。之前被apache2.2+MySQL先整到,接者又被MySQL的校對編碼還有multibyte string encoding等等給推倒,好不容易在windows上搞定apache+php+MySQL(都是wiki的錯,誰叫他推薦我用最新的…淚~~)。最近又要來連個Oracle…還是作個筆記不然下次大概忘光了=w=

解決方法主要是參考Oracle Technology Network的這篇文章,但看文時有時看漏重點白忙很久,以下把重點列出

  1. 到Oracle網站下載 Instant Client 這是可以免費下載的不用擔心,不過要下載要註冊Oracle會員(同樣無料)。
  2. 下回來後解壓縮到某個目錄,然後把這個目錄的路徑加入Windows系統的PATH環境變數。注意! 一定要加的比其他Oracle軟體路徑更前面!!!
  3. 趁重開機讓環境變數生效之前也順便加一下Oracle相關環境變數吧。一定要加的有兩個:TNS_ADMIN 和 NLS_LANG。不想加在系統中也可以寫在php程式的開頭,使用PutEnv(“NLS_LANG=yourNlsLang”); 的語法設定,好處是彈性比較大,連不只一台Oracle,然後各台設定不同的時候可以動態修改。
    • TNS_ADMIN 是你的 服務命名組態檔(tnsnames.ora)的路徑。通常有連oracle的需求時,windows上也會裝Client的工具組吧,並且可以使用該應用程式設定連線組態,找到你的連線組態,選另存新檔,這個tnsnames.ora就會被產生出來。
    • NLS_LANG是設定連線編碼用的,可參考這份說明文件。要設定成跟你想連線的遠端Oracle機器相同才行。要知道機器的設定,可以開windows上的oracle client下SQL指令:SELECT * from V$NLS_PARAMETERS 可以列出相關參數
    • NLS_LANG的格式是 :_.
      例如: NLS_LANG=TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5
    • 如果曾經在環境變數中設定ORACLE_HOME, ORACLE_SID 請刪除這兩個環境變數。
  4. php.ini 的設定當然是不可或缺的。請把 extension=php_oci8.dll 打開,存檔後重新啟動apache。
  5. 如果沒有問題的話,使用 phpinfo(); 應該可以看到多出了oci8的相關設定才是。

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>