早期 PHP 以 ODBC 或舊版 Oracle 擴展連接遠端 Oracle 8.0.5/8i for NT 常失敗。本文提供經驗證可行的 OCI8 連接字串寫法,並說明必要的環境設定步驟。
<?php
$connStr = "(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.65.73.3)(PORT=1521))
(CONNECT_DATA=(SID=ORCL))
)";
$dbconn = OCILogon("zypdp", "zypdp", $connStr);
if ($dbconn) {
echo "連接成功
";
if (OCILogOff($dbconn)) {
echo "關閉連接成功!";
}
} else {
echo "連接失敗";
}
?>
| 參數 | 說明 |
|---|---|
| PROTOCOL | 傳輸協定,通常為 TCP |
| HOST | Oracle 伺服器 IP 或主機名 |
| PORT | Listener 埠,預設 1521 |
| SID | 資料庫執行個體名稱(如 ORCL) |
此字串即為 OCILogon 的第三個參數(傳統文件稱 OCACLE_SID,實為完整連線描述子)。
php.ini 啟用 extension=php_oci8.dll,並確認 extension_dir 指向正確資料夾。PATH 包含 oci.dll 所在目錄。tnsping 測試連線正常。OCI.dll not found。OCILogOff 判斷回傳值,實務上直接呼叫 OCILogOff($dbconn) 即可,無需判斷回傳值。生產環境建議改用 OCIPLogon(持久連線)或連線池,並將連線字串集中管理於 tnsnames.ora,程式碼僅需 OCILogon("user","pass","TNS_ALIAS"),提升可維護性。