[PHP] 連線Oracle DB on Windows

本文最後更新於:2024年5月2日 晚上

註:這裡也有SQL Server(MsSQL)的連接方式

環境建置

一、安裝Oracle Instant Client(x64 Windows)

  1. 此網頁下載「Basic Packge」

  2. 解壓縮到資料夾

  3. 新增環境變數
    C:\instantclient_21_3

二、安裝PHP擴展

  1. 將「php_oci8_12c.dll」放入/php/ext/
    12c代表Oracle版本

  2. 將php.ini中的「;extension=oci8_12c」註解取消

  3. 重新啟動Apache或其他Web Server以重新載入php.ini的設定

PHP串接

一、 連線設定(CodeIgniter 3.1.10)

$host = '[SERVER_HOST]';
$port = '[SERVER_PORT]';
$service_name = '[SERVICE_NAME]';
$username = '[ACCOUNT]';
$password = '[PASSWORD]';

$config = array(
    'hostname' => "$host:$port/$service_name",
    'username' => $user,
    'password' => $password,
    'database' => '',
    'dbdriver' => 'oci8',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => FALSE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => $this->char_set,
    'dbcollat' => $this->dbcollat,
    'swap_pre' => '',
    'encrypt'  => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => $this->save_queries
);

try {
    $db = @$this->load->database($config, true);
    if(empty($db->conn_id)) {
        // 連接失敗
        // 錯誤訊息
        echo $db->error()['message'];

    } else {
        // 連接成功
    }
} catch (Exception $e) {
    // 連接時出現例外
    // 例外訊息
    echo $e->getMessage();
}

環境

  • Windows 10
  • Wamp Server 3.2.3
  • PHP 7.4.9
  • CodeIgniter 3.1.16
  • Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
  • instantclient_21_3

[PHP] 連線Oracle DB on Windows
https://hankz1108.github.io/posts/20231102-php-oracle-windows/
作者
Hankz
發布於
2023年11月2日
更新於
2024年5月2日
許可協議