環境
- 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);
?>
若可成功連結即表示安裝與設定成功
參考連結
- [Install Informix on Debian] (Google 搜尋 “informix.so”)
- [Informix finderr] (直接在
$INFORMIXDIR/msg
下grep -R
亦可) - Setting Apache2 PATH environment variable
- PECL 上的 informix
Last modified on 2012-06-15