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("DBNAME@DBSERVER", "USERNAME", "PASSWORD");
var_dump($db);
?>

若可成功連結即表示安裝與設定成功

參考連結


Last modified on 2012-06-15