Debian Linux 安裝 PHP, 然後要用此 PHP 去連 Oracle, 不過預設 Orace connect 是沒有編進 PHP 裡面的, 但是又不想要把 PHP 重新 make, 為了要維護方便, 所以就想辦法來把他編成 Modules, 在 Pecl 找到 oci8, 一切就方便多囉~
Debian 安裝 PHP Pecl oci connection
安裝 OCI8 步驟(安裝 PHP 連 Oracle Version 10.2.0.4 的 OCI 版本)
- 於 Oracle Database Instant Client 下載 Client/SDK (Version 10.2.0.4 Instant Client Package - Basic 和 SDK)
- apt-get install php-pear php5-dev
- mkdir -p /opt/oracle
- cd /opt/oracle
- unzip ~/oracle-instantclient-basic-10.2.0.4-1.i386.zip # instantclient_10_2
- unzip ~/oracle-instantclient-devel-10.2.0.4-1.i386.zip # instantclient_10_2/sdk/
- mv instantclient_10_2 instantclient
- cd /opt/oracle/instantclient
- ln -s libclntsh.so.10.1 libclntsh.so
- ln -s libocci.so.10.1 libocci.so
- pecl install oci8
問題: Please provide the path to ORACLE_HOME dir. Use 'instantclient,/path/to/instant/client/lib' if you're compiling against Oracle Instant Client [autodetect] :
輸入: shared,instantclient,/opt/oracle/instantclient - pecl 裝完後, so 檔會放置於: /usr/lib/php5/20060613+lfs/oci8.so, 此檔案就是 php oci8 extension 囉~
- vim /etc/php5/conf.d/oci8.ini # 建立 oci8.ini 檔案(讓 apache 載入時讀取此 extension), 內容如下:
extension=oci8.so
- /etc/init.d/apache2 reload
- 這樣子就完成 PHP OCI8 的安裝囉~
測試
vim oci.php
<?php
oci_connect();
?>
php oci.php # 執行
- Warning: oci_connect() expects at least 2 parameters, 0 given in oci.php on line 2 # 看到這個就代表成功了~
- Fatal error: Call to undefined function oci_connect() in oci.php- on line 2 # 看到這樣子就是沒裝好或沒設好.
寫個簡單的 Oracle Connect 的 Insert/Select 程式測試:
<?php
$dbh = oci_connect ('ACCOUNT', 'PASSWORD', '//10.0.0.1/DBNAME') or die('OCI Connect error');
$res = oci_parse($dbh, 'INSERT INTO "USERS"(ID, NAME, PASSWORD) VALUES(1, "admin", "admin_password")') or die('Insert error');
//$res = oci_parse($dbh, 'SELECT * FROM "USERS"') or die('Select user error');
oci_execute($res);while ($row = oci_fetch_assoc($res)) {
foreach ($row as $item) {
echo $item . "\n";
}
}
?>
其它參考
- Howto: Install Oracle Instant Client and PHP5 OCI8 module on Debian Sarge
- Howto: Install Oracle Instant Client and PHP OCI8 module
- Install OCI8 and MSSQL extensions for PHP5 on Debian 4.0 Etch
- Oracle SQL Developer # 推薦 Windows 可以使用此軟體來連 Oracle
其它附註
Oracle SQL Developer 設定
- 設定 Role 要選 default, 若選 sysdba, SQL 語法 SELECT Table 前就需要加 db name
- DB insert 需要用 "單引號" 括起來(Oracle 認定的字串需要用 單引號 選起來), 雙引號是對分辨 Table name 大小寫用的.