有时候,我们会有一些需求,这些模块在我们刚刚编译完php之后,发现少了一个模块,没有编译进来,
解决办法有两种:
第一种你需要去重新编译,找到你的源码包,重新编译,重新配置,
第二种使用动态的方式把它加载进来,就是你单独地去编译出来一个模块就可以了,类似于apache的动态共享模块。
## 查看PHP加载的模块
[root@wy ~]# /usr/local/php/bin/php -m
解释说明:
这些模块里有动态的,有静态的;而一些动态的可以在php.ini里去定义;
搜索动态模块在php.ini里 grep '^extension=' /usr/local/php/etc/php.ini
## 查看PHP自带的一些源码包、模块
[root@wy ~]# cd /usr/local/src/php-5.3.28/ext/
[root@wy ext]# ls
解释说明:
若里面没有所需要的,可以从网上去下载源码包
## 比如扩展安装curl模块(先查看一下有没有安装此模块)
[root@wy ext]# /usr/local/php/bin/php -m|grep -i curl
[root@wy ext]#
## 没有则进入到curl目录里
[root@wy ext]# cd curl
## 通过phpize工具生成configure进行编译
[root@wy curl]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
[root@wy curl]# ls
acinclude.m4 build config.m4 configure.in curl.dsp ltmain.sh mkinstalldirs php_curl.h tests
aclocal.m4 config.guess config.sub config.w32 install-sh Makefile.global multi.c run-tests.php
autom4te.cache config.h.in configure CREDITS interface.c missing package.xml streams.c
## 安装源码包三部曲
[root@wy curl]# ./configure --with-php-config=/usr/local/php/bin/php-config
解释说明:
--with-php-config固定语法
[root@wy curl]# make
[root@wy curl]# make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
解释说明:
会把模块的文件放在此目录下
## 查看生成的curl模块
[root@wy curl]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
curl.so
解释说明:
这个路径是extension_dir中配置的;extension_dir它是存放扩展模块的;
通过/usr/local/php/bin/php -i |grep -i extension_dir可以查看;
如果两个路径一致,那么直接手动加载即可。如果不在同一目录下,手动加载需全路径;
## 在配置文件中手动加载
[root@wy curl]# vim /usr/local/php/etc/php.ini
extension=curl.so
## 查看是否加载成功
[root@wy curl]# /usr/local/php/bin/php -m |grep curl
curl
## 重启apache加载这个模块
[root@wy curl]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@wy curl]# /usr/local/apache2/bin/apachectl graceful
###########若我们不小心在php.ini模块名写错了(写成了curl22.so):################
## 检查是否加载了此模块(这肯定是没有的)
[root@wy curl]# /usr/local/php/bin/php -m|grep curl
[root@wy curl]#
## 接下来,查看一下错误日志
[root@wy curl]# tail /usr/local/php/logs/php_errors.log
[06-Nov-2016 23:45:16 Asia/Chongqing] PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/curl22.so' - /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/curl22.so: cannot open shared object file: No such file or directory in Unknown on line 0
###############################################################################