在Linux下使用php連線oracle database

之前看網路上的資料,使用php連線oracle都不成功,今天剛好有空,就來測一下吧!

網路上的資料,大多都是教大家怎麼在Windows下使用appserver來連線oracle database,也有人介紹ODBC的方式來抓資料,但是ODBC是微軟的產品,並不是所不尚平台上都有這個元件可以呼叫,而且也為了系統穩定度,linux下開發php一直是小弟我的工作需要。之前看了某一篇文章,介紹linux下使用php連線oracle db,但是測試失敗,由於沒有急迫性,所以也就沒有繼續測下去,現在,急迫性出現,剛好今天晚上也有空,那就來測試一下吧!

測試的環境如下

一、CentOS 5.3
二、內建的php
三、內建的OCI連接元件

也就是說,灌好CentOS Linux就可以直接連Oracle了,之前網路上的給的概念都有一些些問題。

其實,今天測起來還蠻順的,在linux下使用php連接oracle db的動作如下

1.檢查php.ini 看看extension有沒有 oci8.so

檢查php中是不是有orcale的連接元件

2.使用OCI指令來寫個測試的PHP
<?php
oci_connect();
?>
這個只是測試oci元件是不是正常運作
當然,會出現錯誤訊息,因為沒有給足夠多的參數,正常畫面如下

2009-09-30_205400.jpg
3.寫個oracle DB連線的php吧
$con=oci_connect(‘user’,’password’,’db’) or die (‘Fail to connect Oracle DB’);
對oracle 來說,資料庫稱為user,因為它是先規劃table space(SID),再在table space上建立user,再在user中建資料表。
不過,第三個參數講成db名稱是怪怪的,我是使用SID才連線成功的,因為兩台linux是不同一台。

php原廠文件說 db是選擇性的,請參考這裡,內容可能是orcale 的instance或是tnsnames,如果沒有指定,PHP使用的環境變量ORACLE_SID和TWO_TASK確定的名稱,當地的Oracle實例和tnsnames.ora中相應的位置。

另外還可以指定字集,以及連線的模式,連線的模式可以是OCI_OPERATOR/OCI_SYSDBA,假設要指定連線模式,還需要使用oci8.privileged_connect來設定。

$req=oci_parse($con,’sql statement’) or die (‘Fail to get data’);
oci_execute($req);
接下來就是取出資料了!可以用do while來把資料拿出來
當然也可以用for loop來做,就看各位看官的習慣囉!

while ($row=oci_fetch_assoc($req)){
foreach ($row as $item){
echo $item. “\n”;
}
}

oci_fetch_assoc應該是計算有多少筆資料的涵式

測試結果,成功使用php連接鼎新tiptop GP5,tiptop GP5是使用linux版的oracle 11G,我看日後有一些報表的開發,真的可以自己來囉!另一套使用oracle的系統也是11g,不過是在windows server 2003 R2上,所以還要再找時間去測看看!

快速架設openwebmail server

每次架設openwebmail都超痛苦的
版本相容性的問題,不論是用tarball還是rpm安裝都一樣
又因為是使用perl開發的語言
所以perl-Compress-Zlib perl 等等程式又有相容性的問題
最近用CentOS 5.3 架了一台主機
需要架設Email 使用yum更新時又有一堆問題(版本太新果然不是件好事)

今天在網路上看到快速架設法
真的一試就成功
一樣是使用yum的方式

cd /etc/yum.repos.d
lftpget http://openwebmail.org/openwebmail/download/redhat/rpm/release/openwebmail.repo
yum install openwebmail

解說:
1.進到yum更新來源的設定目錄
2.下載更新設定檔
3.開始安裝
4.Have Fun.

session還是記錄一下時間比較好

在linux平台上進行php程式開發時,session可以指定路徑存放~
而且裡面的內容是純文字檔~
假設在session中記錄了相關的資料~
答案~密碼~動作就被看光光了~
所以~在存在session中的資料~重要的~還是要加密一下~

另外,在某些borswer開啟下~就會記錄開啟的session編號~
所以~如果在session中沒有記錄上次執行的時間
那麼 …session不會timeout~永遠都有效~
這是多麼恐怖的一件事啊~
難怪某社群網站~被我用這種方式打造出來的機器人玩翻掉..
一直timeout也很怪~
那session判斷的程式~也含更新session中時間的功能的話~
也許就不會有這樣的問題了…
只是~會花一點點效能~

快要忘記的Linux指令

top 看機器的效能 cpu使用情形 有點類似Windows中的檔案管理員
nmap 用來看電腦的連接埠開關情形,駭客必用的工具之一(總要知道哪裡有開門唄)
netstat 常常用,天天用,想到就用。
ping 這個必用吧
tcpdump 看網路連線的來源
tcpdump -i eth0 port 80
監聽eth0介面中port80進出的情形
tcpdump -i eth0 -s 1500 port 80
設定每筆資料的長度可以到1500 byte
nslookup 忘記~我就慘囉
nc 可掃瞄TCP UDP的post掃描
df -a    列出所有的磁碟分割及使用情形

GPhone呼之欲出!Google研發中品牌手機傳在台灣設計-將提供比目前手機功能更強大的網路瀏覽器

申文怡/綜合外電
Google 研發自家手機的消息越傳越熱。據華爾街日報(WSJ)報導,網搜龍頭將撈過界,製造自有品牌手機GPhone。據悉,Google已委託台灣某高科技業者設計以Linux運作的手機,並可望在2008年第1季推出,該公司希望這款新手機可以和iPhone一樣轟動。
Read more