用php -m 这个命令来查看php下加载的模块,如果提示无法执行这个命令,请通过绝对路径去执行或者加入到PATH变量中。
查看到的模块是无法区分静态和动态的。动态的需要在php.ini里面去定义。
如何编译一个没有加载的模块,一种是重新编译,一种是动态的方式加载,单独编译这个模块。
找到php 的源码包。在其中找到ext目录,这个里面有很多的模块的源码,如果没有就需要到网上找这个源码的包,编译的方法是相通的。如果php或者Apache源码包的目录下/usr/local/src/php-5.6.16/ext没有需要的模块目录的话,需要在网上去下载一个模块的源码包到php或者Apache源码包的目录下。
比如要编译安装curl这个模块:php -m |grep -i curl 先确认有没有安装这个模块,没有任何提示就是没有安装,进入到curl这个目录下找到configure 如果没有便在当前目录直接运行phpize这个命令就会生成configure ;
生成后 运行这个命令 ./configure --with-php-config=/usr/local/php/bin/php-config 前面是执行的参数,安装哪个模块就在哪个模块下执行这个命令,等号后面是安装后的路径
然后make ------>再make install 将安装的文件放入到一个路径下,会在下面输出结果的。这个文件就是curl模块的文件名称是curl.so ,
有一个目录专门存放这些模块是默认的路径,通过命令可以查到
php -i |grep extension_dir 可以查到那个默认的路径;当然这个extension dir 也是可以自定义的。
vim /usr/local/php/etc/php.ini 打开php的主配置文件找到extension dir = 这里就可以进行php模块存放位置的路径指向了,
上面一个带路径表示的那个定义存放位置,改不改无所谓。
再一个找到这些类型的文件加入刚刚手动装载的模块extension=curl.so 保存退出就可以了,php -m 查看加载的模块就可以看见刚刚我们保存进php.ini的模块。
这时候我们再用这个命令就可以查看到哪个模块是动态的了:grep '^extension=' /usr/local/php/etc/php.ini 就可在这个配置文件中找到动态加载的模块是哪些。
转载于:https://blog.51cto.com/frankch/1747470