php自身提供了很多扩展,比如curl,gmp, mbstring等等。我们在编译安装php时未必安装了所有扩展。那么在安装完php后,如果想单独安装某个php自身的扩展怎么办呢?
我们以curl扩展模块的安装为例说明如何单独添加扩展。
步骤
1.进入php源码的扩展目录。本例中我的源码对应目录如下:
/search/src/php-7.0.14/ext
1
2.进入模块目录,我们安装的是curl扩展,所以进入curl目录。此时,我们所在的目录是
/search/src/php-7.0.14/ext/curl
1
3.执行phpize。注意,如果你的机器上有多个php版本,一定要执行你准备安装扩展的php版本对应的phpize。比如,我的机器上同时有php7和php5.3.3。我当前准备为php7安装curl扩展。所以执行php7对应的phpize
1 /usr/local/php70/bin/phpize
2
3 结果类似:
4 Configuring for:
5 PHP Api Version: 20151012
6 Zend Module Api No: 20151012
7 Zend Extension Api No: 320151012
4.执行
./configure --with-php-config=/usr/local/php70/bin/php-config
1
说明:如果你的机器上只有一个php版本,大多时候不需要特别使用–with-php-config指明相应的php-config所在位置。
5.执行make,之后会在./modules/目录下生成curl.so文件
6.执行make install
结果类似:
Installing shared extensions: /usr/local/php70/lib/php/20151012/
1
2
执行结果告诉你将curl.so安装到了哪个目录。
一般情况,如果你正确的指定了php-config或者你的机器只有一个php版本,so都会被正确安装到相应php的extension_dir。如果执行make install后,extension_dir目录下没有相应的so,可以手动将第5步中生成的so文件cp过去。
要查看具体extension_dir,可以执行如下命令。
php -i| grep extension_dir
结果类似
extension_dir =>/usr/local/php70/lib/php/20151012/ =>/usr/local/php70/lib/php/20151012/
1
2
3
7.在php.ini中增加
extension=curl.so
1
如果不知道php.ini的具体位置,可以通过如下命令查看
php --ini
1
8.执行如下命令,查看是否安装成功
php -m | grep curl
1
如果你看到了curl, 恭喜你,安装成功!
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的动态模块加载就完成了。
扩展库是php扩展的功能,比如php本来不支持 *** 作某种功能 ,但在新版本想对它提供支持,就以扩展的方式来提供,这样,我们在配置php时,如果我们不用此功能,我们就可以让php不加载他.从而节省服务器资源.提供其性能\x0d\x0aphp的扩展库一般放在php目录下的ext目录里.你在网上下载的php压缩包解压后应该可以看到.\x0d\x0aphp.ini中的 extension_dir 用来指定你的扩展名的地址 。\x0d\x0aphp.ini中有一排像 extension="xxxxxx.dll" 的内容就是用来配置让你的php运行环境支持什么不支持什么。\x0d\x0a以下为php.ini中的剪切段\x0d\x0a------------------------------\x0d\x0aextension=php_bz2.dll\x0d\x0aextension=php_curl.dll\x0d\x0aextension=php_dba.dll\x0d\x0aextension=php_dbase.dll\x0d\x0aextension=php_exif.dll\x0d\x0aextension=php_fdf.dll\x0d\x0aextension=php_gd2.dll //php对图片 *** 作的扩展\x0d\x0aextension=php_gettext.dll\x0d\x0aextension=php_gmp.dll\x0d\x0aextension=php_ifx.dll\x0d\x0aextension=php_imap.dll\x0d\x0aextension=php_interbase.dll\x0d\x0aextension=php_ldap.dll\x0d\x0aextension=php_mbstring.dll\x0d\x0aextension=php_mcrypt.dll\x0d\x0aextension=php_mhash.dll\x0d\x0aextension=php_mime_magic.dll\x0d\x0aextension=php_ming.dll\x0d\x0aextension=php_msql.dll\x0d\x0aextension=php_mssql.dll //php *** 作mssql (sql server)数据库的扩展\x0d\x0aextension=php_mysql.dll //php *** 作mysql数据库的扩展\x0d\x0a------------------------------\x0d\x0a要让php支持某种功能,把extension前面的 " "号去掉,重启apache或iis即可。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)