2012年6月15日 星期五

PHP Informix on Linux 安裝與設定

環境
  • Ubuntu 12.04 LTS
  • Apache 2.2.22
  • PHP 5.3.10
如果沒有 apache 與 php 環境可由套件庫安裝
$ sudo apt-get install apache2 php5
為了編譯模組,需要安裝 php5-dev
$ sudo apt-get install php5-dev
為了取得 PECL 上的原始碼,需要安裝 subversion (即 SVN)
$ sudo apt-get install subversion

安裝 Informix Client SDK

這個連結可以下載 Informix Developer Edition,有免費的版本,但僅供開發使用且有使用資源上的限制。我抓下來的檔案為 iif.11.70.UC5DE.Linux-RHEL5.tar。其實根據 [Install Informix on Debian] 這篇文章看來,應該是有單純的 ClientSDK 可以下載,但是我找不到...
將其解開
$ cd && mkdir informix && cd informix
$ tar -xf /PATH/TO/iif.11.70.UC5DE.Linux-RHEL5.tar
建立 informix 帳號與群組
$ sudo addgroup --system informix
$ sudo adduser --system informix --ingroup informix
開始安裝
$ sudo ./ids_install # 官方文件是要我們加上 `-i gui` 以圖形模式安裝,亦可
    #這中間的訊息會出現下面這一行疑似錯誤的訊息,但是不影響後面動作
strings: '/lib/libc.so.6': No such file
在安裝過程中,多數設定都用預設值,但安裝目錄預設為 /opt/IBM/informix,我改為 /opt/informix 了。另外,可以自訂想安裝的模組,由於我不需要自行架設 server,所以這邊我只留下 IBM Informix Client SDK 與 Global Language Support (GLS) 中的 Chinese,其他全都取消了。
最後設定環境變數供後續安裝使用
export INFORMIXDIR=/opt/informix

安裝 PHP Informix 模組

$ cd && mkdir php_informix && cd php_informix
取得 php informix 的原始碼
$ svn checkout http://svn.php.net/repository/pecl/informix/trunk/
進行建置
$ cd trunk
$ phpize --with-php-config=`which php-config`
$ ./configure --with-php-config=`which php-config`
停!這邊有個問題需要處理....在產生出來的 Makefile 的第 16 行有個這樣的敘述
INFORMIX_SHARED_LIBADD = -Wl,-rpath,/opt/informix/lib/esql -L/opt/informix/lib/esql -Wl,-rpath,/opt/informix/lib -L/opt/informix/lib -lifsql -lifasf -lifgen -lifos -lifgls -lnetstub -ldl -lcrypt -lifglx
我們必須手動給他加點參數才能讓後續執行動作正常,在後面加上 /opt/IBM/lib/esql/checkapi.o
INFORMIX_SHARED_LIBADD = -Wl,-rpath,/opt/informix/lib/esql -L/opt/informix/lib/esql -Wl,-rpath,/opt/informix/lib -L/opt/informix/lib -lifsql -lifasf -lifgen -lifos -lifgls -lnetstub -ldl -lcrypt -lifglx /opt/informix/lib/esql/checkapi.o
開始編譯與安裝
$ make
$ sudo make install
Installing shared extensions:     /usr/lib/php5/20090626+lfs/
每個人的安裝位置可能不同,以我這裡為例,我的安裝位置是在 /usr/lib/php5/20090626+lfs/ (後續設定會用到)。

設定

新增以下資料至相對應的設定檔中
/etc/php5/conf.d/informix.ini
extension=/usr/lib/php5/20090626+lfs/informix.so
/opt/informix/etc/sqlhosts (偷參考的設定的 nettype 是用 tli,但我測試需用 soc 才能正常連線)
<db_server>     <nettype>       <hostname>      <service>
/etc/hosts
<IP>    <hostname>
/etc/services
<service>   <port_num>/tcp
/etc/apache2/envvars (聽說在 RedHat 上為 /etc/sysconfig/httpd)
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=<hostname>
有可能需要做 locale 的設定
export DB_LOCALE=zh_TW.big5
export CLIENT_LOCALE=zh_TW.big5
重新啟動 apache
$ sudo service apache2 restart
設定完後可在 phpinfo 中看到 Informix 的區段,以及在 Environment 區段可以看到我們設定的環境變數。

測試用 script

這個程式僅供參考用,也可以使用本來可執行的程式進行測試。要注意的是如果使用 php command 進行測試的話,要設定環境變數。(如 /etc/apache2/envvars 中新增的設定)
<?php
$db = ifx_connect("[email protected]", "USERNAME", "PASSWORD");
var_dump($db);
?>
若可成功連結即表示安裝與設定成功

參考連結

沒有留言:

張貼留言