LAMP搭建18:PHP安装扩展模块
查看PHP模块# php -m
bz2
Core
ctype
date
dom
ereg
exif
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
如果我们发现有一个模块没有编译进来,解决办法有两种:第一,需要重新编译,重新配置;第二,单独编译该模块,使用动态共享的方式加载该模块。我们自己尝试编译一个PHP动态共享模块。
PHP安装包的ext目录下包含了许多模块的源代码:
# cd /usr/local/src/php-5.4.36
# cd ext
# ls
bcmath dba fileinfoiconv mbstringodbc pdo_mysql posix simplexmlstandard wddx zlib
bz2 dom filter imap mcrypt openssl pdo_oci pspell skeleton sybase_ctxml
calendar enchant ftp interbasemssql pcntl pdo_odbc readline snmp sysvmsg xmlreader
com_dotnetereg gd intl mysql pcre pdo_pgsql recode soap sysvsem xmlrpc
ctype exif gettext json mysqli pdo pdo_sqlitereflectionsockets sysvshm xmlwriter
curl ext_skel gmp ldap mysqlnd pdo_dblib pgsql session spl tidy xsl
date ext_skel_win32.phphash libxml oci8 pdo_firebirdphar shmop sqlite3 tokenizerzip
PHP默认没有没有安装curl模块,下面命令返回无结果:
# php -m |grep -i curl
我们以编译安装PHP的curl模块为例进行说明:进入curl目录
# cd curl
# ls
config.m4config.w32CREDITScurl.dspinterface.cmulti.cpackage.xmlphp_curl.hstreams.ctests
生成configure相关的文件:
# yum install -ym4 autoconf#安装两个自动生成configure的工具
# /usr/local/php/bin/phpize#生成configure
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
# ls
acinclude.m4 config.h.in config.w32 ltmain.sh package.xml
aclocal.m4 config.m4 CREDITS Makefile.globalphp_curl.h
autom4te.cacheconfig.sub curl.dsp missing run-tests.php
build configure install-sh mkinstalldirs streams.c
config.guess configure.ininterface.cmulti.c tests
配置
# ./configure --with-php-config=/usr/local/php/bin/php-config
错误1:configure: error: Please reinstall the libcurl distribution -
easy.h should be in /include/curl/
解决:#yum -y install curl-devel
编译
# make
# echo $?
0
安装
# make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
# echo $?
0
模块已生成
# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
curl.so
查看extension_dir
# php -i |grep extension_dir
extension_dir => /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525 => /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525
sqlite3.extension_dir => no value => no value
# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
curl.so
也可以自定义extension_dir
# vim /usr/local/php/etc/php.ini
……
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
; extension_dir = "ext"
……
配置加载curl.so
……
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
extension=curl.so
……
查看动态加载的模块
# php -m |grep curl
curl
页:
[1]