PHP动态编译挂载模块
最近在一台Redhat机器上修复一个phpldapadmin缺少gettext组件的问题的时候,学到一个动态编译挂载PHP模块的方法。
事情起因是这台服务器由前人装了openLDAP和phpldapadmin后,openLDAP是配置完成了,但是phpldapadmin却因为缺少gettext而无法正常运行。而且系统是老旧的Redhat6.1,不知道去哪里找到完整的包来重新编译PHP,所以在网上发现了这个方便的方法。
这种方式需要先找到两个命令:phpize,php-config。
可以通过locate找到它们。
我这里的路径分别是:
/usr/local/bin/phpize
/usr/local/bin/php-config
接着,例如需要编译gettext模块,cd到php源码里面的ext下的gettext目录,执行phpize命令:
[root@rhel6 gettext]# /usr/local/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
可以看到有一些信息输出,接着开始编译:
[root@rhel6 gettext]# ./configure --with-php-config=/usr/local/bin/php-config
最后修改php.ini的配置文件载入这个模块:
extension="gettext.so"
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
去掉前面的分号后,记得把后缀改成.so,这种方式编译出来的后缀都是.so的。
重启服务器后用phpinfo便可以看到gettext已经载入成功。
参考:
http://bguncle.blog.51cto.com/3184079/1329895
http://lihuipeng007.blog.163.com/blog/static/121084388201071830423/