以前以为php的扩展要重新编译php,今天在群友的指点下知道可以像apache模块一样动态扩展,以mcrypt举例。
进入要安装的扩展的源码目录
cd /root/php-5.2.6/ext/mcrypt 运行phpize /usr/local/php5/bin/phpize [ansi]root@Web2 11 mcrypt $/usr/local/php5/bin/phpize Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519 出现这样的提示说明可以扩展。
然后编译安装
#./configure --with-php-config=/usr/local/php5/bin/php-config
#make #make install
Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/ 记住这里提示的路径刚才编译的module就在这里
[ansi]root@Web2 20 mcrypt $cd /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/ [ansi]root@Web2 21 no-debug-non-zts-20060613 $ls eaccelerator.so mcrypt.so memcache.so 然后编辑php.ini(如果php安装在/usr/local/php5 则php.ini在/usr/local/php5/lib/php.ini中添加 extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/" extension = "mcrypt.so" 然后重启apache,然后再访问phpinfo.php 就看到支持mcrypt了。
使用php的常见问题是:编译php时忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想删除目录重装,别说,php还真有这样的功能。 我没有在手册中看到。 如我想增加bcmath支持,这是一个支持大整数计算的扩展。windows自带而且内置,linux“本类函数仅在 PHP 编译时配置了 --enable-bcmath 时可用”(引号内是手册中的话) 幸好有phpize, 方法是,要有与现有php完全相同的php压缩包。我用的是php-5.2.6.tar.gz。 展开后进入里面的ext/bcmath目录 然后执行/usr/local/php/bin/phpize,这是一个可执行的文本文件,要确保它在系统中 会发现当前目录下多了一些configure文件, 如果没报错,则 Php代码 ./configure --with-php-config=/usr/local/php/bin/php-config 注意要先确保/usr/local/php/bin/php-config存在。 如果你的php安装路径不是默认的,要改。 如果没有报错,则make,再make install ,然后它告诉你一个目录 你把该目录下的bcmath.so拷贝到你php.ini中的extension_dir指向的目录中, 修改php.ini,在最后添加一句extension=bcmath.so 重启apache. 手把手教你如何动态安装php的扩展模块php安装好后,可能在初次安装时,会有些模块会有遗漏,但是我们又不想重新编译php,因为耗时是比较长的。我们可不可以在不重新编译安装php的情况下,来为php单独添加某一个模块呢?查找资料,发现还是有方法的,重点就是phpize了,于是写了这篇文章. 下面我们就以单独为php加载mysqli模块为例,演示如何动态为php添加模块。
1、找到php原码安装文件
2、cd /home/php/ext/myslqi
3、运行 /usr/local/php/bin/phpize
4、/configure –with-php-config=/usr/local/php/bin/php-config
5、make && make install
6、安装完成之后会在系统/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/这个目录下面生成mysqli.so的库文件
7、编辑php.ini文件,指定php到哪人目录读取模块
vi /usr/local/php/etc/php.ini
extension_dir=”/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613″
extension=mysqli.so
8、重启php服务 /usr/local/php/sbin/php-fpm restart
7、/usr/local/php/bin/php -m|grep mysqli 查看mysqli.so是否存在
如果步骤正确,你的人口也不差的情况下,应该这样php的动态模块加载就完成了。 |
|