rlib的首页
[url]http://rlib.sicompos.com/[/url]
这是一个产生报表的工具
 
现在一个php的程序需要使用
首先当然是下载
[url]http://sourceforge.net/project/showfiles.php?group_id=88448[/url]
解压后按照INSTALL所说的那三步走
./configure
make
make install
一切都没问题,安装成功
 
但是开发人员说没装好,访问的页面显示
Fatal error: Call to undefined function: rlib_init()
而并没有出现想要的报表
 
很明显rlib这个extension扩展并没有被php载入
 
如何解决呢?难道要重新编译php?
翻出很久之前的安装过程,是装好php之后再装的rlib扩展.所以应该不需要重装php
 
查看phpinfo的页面,发现
"Configuration File (php.ini) Path"这一栏写的是/usr/local/php/lib/ 而没有指出php.ini,显然这个路径下面没有,简单,直接copy一个到这个路径下.
 
重启apache,再看phpinfo的页面,php.in已经列出来了
"extension_dir"这一栏是./ ,而我的rlib.sorlib.sa/usr/local/php/lib/php/extensions/debug-non-zts-20041030这个目录下
显然php.ini中的设置不对.
 
正确的安装办法 :
首先看本机的php装了几个.因为有的机器上装了多个php.要确保rlib装在正确的php,最好先指定好php-config的路径,我现在想要把rlib装在/usr/local/php这个下
输入whereis php-config 来检查看这个程序所在的地方
输出显示/usr/bin下有一个php-config,所以将其重命名禁用.
然后修改PATH变量,指到正确的php-config路径,执行
PATH=/usr/local/php/bin:$PATH
查看PATH变量的值
echo $PATH 输出会有刚指定的路径/usr/local/php/bin
 
然后安装rlib,解压缩之后执行
./configure 输出如下
rlib-1.3.7:
   prefix:                   /usr/local
   compiler:                 gcc
   Memory debugging:         no
   Warning Fun:              no
   Crash detection:          yes
   UTF8 disabled:            yes
   WIN32 build:              no
   Documentation:            no
 
   INPUTS:
    MYSQL:                   yes
    POSTGRES:                no
ODBC:                    no
 
   COMPRESSION:
    PDF:                     yes
   GRAPHING:
    PDF:                     Always
HTML:                    no
 
   BINDINGS:
    PHP:                     yes
     PHP entension dir:      /usr/local/php/lib/php/extensions/no-debug-non-zts-20041030
    PYTHON:                  no
     PYTHON version:         2.2
     PYTHON entension dir:  
    JAVA:                    no
    CSHARP:                  no
    PERL:                    yes
     PERL entension dir:     /usr/lib/perl5/5.8.0/i386-linux-thread-multi
 
   ** If you like RLIB send a postcard from where you are in the world to:
   ** Bob Doan - 4140 Skyron Drive - Doylestown - PA - 18901 – USA
 
   Music:                    Coldplay / Virgin Radio
   Having Problems:          [email][email protected][/email]
   Want To Contribute:       [email][email protected][/email]
   Commercial License:       [email][email protected][/email]
注意php exention dir 所指的路径,也就是rlib.so这个extension库安装的位置
 
然后执行
make
make install
输出关键的地方是
/usr/bin/install -c .libs/rlib.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20041030/rlib.so
/usr/bin/install -c .libs/rlib.lai /usr/local/php/lib/php/extensions/no-debug-non-zts-20041030/rlib.la
PATH="$PATH:/sbin" ldconfig -n /usr/local/php/lib/php/extensions/no-debug-non-zts-20041030
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/local/php/lib/php/extensions/no-debug-non-zts-20041030
说明已经装好库了,可以查看
ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20041030/
就会列出库文件rlib.larlib.so
 
查看phpinfo页面,注意下面几个变量的值
Configuration File (php.ini) Path  必须显示的完整的php.ini的路径,/usr/local/php/lib/php.ini
如果只是目录,就需要手动复制一个php.ini到这个目录下,然后重启apache,直到看到这个项目是完整路径
extension_dir  这个是扩展库安装的目录,必须指定为rlib.so安装的位置.
 
这里我们修改php.ini
指定扩展库目录的位置
extension_dir ="/usr/local/php/lib/php/extensions/debug-non-zts-20041030"
而默认的是 extension_dir ="./"
 
增加扩展库的支持
extension=rlib.so
 
重启apache即可