資料庫環境 : red flag linux dc 4.1 + oracle 9.2.0.4
PHP環境:win 2000 server sp4 + IIS 5 +php 5.2
過程 :1、 安裝完php 5.2 後,mysql 正常, 安裝phpbb ,正常。
2、由於php 5.2 拋棄了php_oracle.dll , 只剩下 php_oci8.dll,所以只能開啟php_oci8.dll 擴充,修改php.ini 後,重新啟動IIS,串連ORACLE失敗, 提示找不到oci_connect 的定義。
3、baidu,google多方尋找, 分別實驗:關鍵目錄複寫,PATH 設定, ORACLE_HOME 、ORACLE_SID設定,msvcr71.dll 複製,後來在一些高人的文章,發現問題應該出現在 oracle 的oci.dll,用了depend工具分析php_oci8.dll,發現在調用oci.dll 出錯,OCILobRead2 函數是紅色,按這個東東再尋找文章,發現有個牛人在罵oracle , 原來php5.2 的php_oci8.dll 必須要裝oralce 10g 以上的client 才可以 , 因為OCILobRead2在oracle 10g的oci.dll 才有定義, oracle 支援建議安裝oracle 10g client ,,
4、那位牛人自己動手, 修改了DLL , 咱沒這個能力,只有老實下了oracle 10g client 的basic 版本, 30多M , 解壓,發現沒有安裝檔案 ,看了文檔,建議是新開個目錄,複製這些檔案,把該目錄加到PATH中。按照文檔完成。重新啟動IIS,這下子,PHP不提示錯誤了, 但ORALCE串連還是失敗 , 提示沒有可用的TNSNAME ,我的ORACLE 9I CLIENT還是正常的 ....
5、最後, 我把10g 的相關檔案 在安全模式下覆蓋了9i 的bin目錄下的檔案, 重起WIN。
6、測試,串連成功, 又發現問題, 亂碼 ...
7、再次baidu , google , 把oci_connect 設定成對應的漢字編碼。
8、成功!