OS: Windows
PHP 環境 -- AppServ 2.5.10:
- Apache 2.2.8
- PHP 5.2.6
- MySQL 5.0.51b
- phpMyAdmin-2.10.3
- php OCI8
- PHP的安裝目錄設為:D:\AppServ\php5
Oracle DB 10g R2 XE for Windows 或是 Oracle 10g R2 client for Windows
步驟:
1. 請參考 PHP:AppServ 安裝及設定 in Windows 安裝 AppServ 2.5.10。
2. 安裝 Oracle Database 10g R2 XE 或是 Oracle 10g R2 Client,可至 Oracle 網站 下載軟體及查看安裝方式。
安裝完成後,設定或是確定 系統環境變數 PATH 內,有 Oracle library directory 的資料,例如
Oracle client:確定 PATH 內有 D:\oracle\product\10.2.0\client_1\bin。
Oracle DB:確定 PATH 內有 %ORACLE_HOME%\bin 。
如果是安裝 Oracle client,請建立一 tnsnames.ora 文件,放置於 D:\AppServ\oracle\admin\ 內,或是其他任何地方。tnsnames.ora sample。
注意事項:
依據 PHP: OCI8 - Manual 文獻,在 Windows 上使用 OCI8,需要安裝 Oracle 10g R2 以上版本的 client libraries。
3. 安裝 OCI8 in Windows:
AppServ 已有將 OCI8 需要的 php_oci8.dll 安裝於 D:\AppServ\php5\ext 中,所以只要修改 php.ini,將 ;extension=php_oci8.dll uncomment ,並確定 extension_dir 是設到 D:\AppServ\php5\ext 即可。
4. 設定 Oracle 的Windows系統環境變數:
A. ORACLE_HOME:
如果有安裝 Oracel DB,請設定此一環境變數。
ext: ORACLE_HOME=D:\oraclexe\app\oracle\product\10.2.0\server。
如果是安裝 Oracle client,此環境變數可以不用設定。
B. NLS_LANG:
設定 NLS_LANG=AMERICAN_AMERICA.UTF8。
如果是使用 Big5,則設定成 NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5。
C. TNS_ADMIN:
如果是安裝 Oracle client,請設定到 tnsnames.ora 存放的路徑,
ext: TNS_ADMIN=D:\AppServ\oracle\admin。
如果是安裝 Oracle DB 則可以不用設定,因為系統會自動預設為 %ORACLE_HOME%\NETWORK\ADMIN。
注意事項:
依據 PHP: OCI8 - Manual 文獻,說明要在 Web Server 啟動前(例如 Apache 啟動前),設定好 Oracle 的環境變數。且不要使用 PHP 的 putenv() 來設定。
不過,經過測試,NLS_LANG、TNS_ADMIN、NLS_SORT 是可以使用 putenv() 來設定,使用到目前為止,還沒有出現問題。
5. 測試:(假設 Ap 和 Oracle DB 裝在同一台機器上。)
在 tnsnames.ora 文件內加上下方的資料:
TEST=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = LOCALHOST)(PORT = 1521))
)
(CONNECT_DATA =
(SID = XE)
)
)
建立測試 php:testOCIConn.php
//oci_connect(string $username, string $password, string $connection_string)
$conn = oci_connect("testconn", "connconn", "TEST");
if(!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
else {
echo "testconn 連線成功!!";
}
run testOCIConn.php,如果出現 testconn 連線成功!!,就表示安裝設定成功,且連線成功了。
參考文件:PHP: OCI8 - Manual。
Thanks too much , You saved my day
回覆刪除Mohamed_Faramawy (Egypt)