2010年9月30日 星期四

AppServ PHP 和 Oracle 10g R2 的 connection 環境建置和設定

環境資料:
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_LANGTNS_ADMINNLS_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

1 則留言:

  1. Thanks too much , You saved my day
    Mohamed_Faramawy (Egypt)

    回覆刪除