php扩展模块装安装目录概要
- /usr/local/php/bin/php -m //查看模块
- 下面安装一个redis的模块
- cd /usr/local/src/
- wget https://codeload.github.com/phpredis/phpredis/zip/develop
- mv develop phpredis-develop.zip
- unzip phpredis-develop.zip
- cd phpredis-develop
- /usr/local/php/bin/phpize //生成configure文件
- ./configure --with-php-config=/usr/local/php/bin/php-config
- make && make install
- /usr/local/php/bin/php -i |grep extension_dir //查看扩展模块存放目录,我们可以在php.ini中去自定义该路径
- vim /usr/local/php/etc/php.ini //增加一行配置(可以放到文件最后一行)
- extension = redis.so
php扩展模块装安装
- 在php安装编译完成后,这时候发现缺少了一个模块,但又无法重新编译php模块,那就使用扩展模块编译
- 查看模块
代码语言:javascript
复制[root@hf-01 ~]# /usr/local/php/bin/php -m
[PHP Modules]
bz2
Core
ctype
date
dom
ereg
exif
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]
[root@hf-01 ~]#
- 然后切换到/usr/local/src/目录下
代码语言:javascript
复制[root@hf-01 ~]# cd /usr/local/src/
[root@hf-01 src]#
- 下载redis包
代码语言:javascript
复制[root@hf-01 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
- 然后更改包的名称
代码语言:javascript
复制[root@hf-01 src]# mv develop phpredis-develop.zip
[root@hf-01 src]#
- 把安装包解压
代码语言:javascript
复制[root@hf-01 src]# unzip phpredis-develop.zip
- 查看解压包
代码语言:javascript
复制[root@hf-01 src]# ls
apr-1.6.3
apr-1.6.3.tar.gz
apr-util-1.6.1
apr-util-1.6.1.tar.bz2
httpd-2.4.29
httpd-2.4.29.tar.gz
mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
php-5.6.30
php-5.6.30.tar.gz
php-7.1.6
php-7.1.6.tar.bz2
phpredis-develop
phpredis-develop.zip
[root@hf-01 src]#
- 切换到phpredis-develop包下面
代码语言:javascript
复制[root@hf-01 src]# cd phpredis-develop
[root@hf-01 phpredis-develop]#
- 编译方法有些特殊,需要先做phpize的操作,目的是为了生成configure文件——>因为编译一个源码包,必须要先有configure,否则是无法去配置的
代码语言:javascript
复制[root@hf-01 phpredis-develop]# /usr/local/php/bin/phpize //生成configure文件
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
代码语言:javascript
复制[root@hf-01 phpredis-develop]# yum install -y autoconf
然后再去生成configure文件
[root@hf-01 phpredis-develop]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@hf-01 phpredis-develop]#
- 这时ls 可以查看到configure文件
- 然后再去配置./configure --with-php-config=/usr/local/php/bin/php-config
代码语言:javascript
复制[root@hf-01 phpredis-develop]# ./configure --with-php-config=/usr/local/php/bin/php-config
- 再去make
代码语言:javascript
复制[root@hf-01 phpredis-develop]# make
- 然后在make install
- make install会把 .so 文件放到/usr/local/php/lib/php/extensions/no-debug-zts-20131226/目录下来
代码语言:javascript
复制[root@hf-01 phpredis-develop]# make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
[root@hf-01 phpredis-develop]#
- 这时可以ls 查看下,会看到生成了 redis.so 文件
代码语言:javascript
复制[root@hf-01 phpredis-develop]# ls /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
opcache.so redis.so
[root@hf-01 phpredis-develop]#
- 现在php还是不支持 redis模块的,可以grep查看下,会看到并没有 redis模块
代码语言:javascript
复制[root@hf-01 phpredis-develop]# /usr/local/php/bin/php -m |grep redis
[root@hf-01 phpredis-develop]#
- 所以需要去配置下,加载redis模块,去编辑配置文件
- 配置文件前,先去查看扩展模块存放目录
- /usr/local/php/bin/php -i |grep extension_dir //查看扩展模块存放目录,我们可以在php.ini中去自定义该路径
- 所有的扩展模块,都会默认放到 /usr/local/php/lib/php/extensions/no-debug-zts-20131226 下去
代码语言:javascript
复制[root@hf-01 phpredis-develop]# /usr/local/php/bin/php -i |grep extension_dir
extension_dir => /usr/local/php/lib/php/extensions/no-debug-zts-20131226 => /usr/local/php/lib/php/extensions/no-debug-zts-20131226
sqlite3.extension_dir => no value => no value
[root@hf-01 phpredis-develop]#
- 编辑php.ini文件,增加一行配置
- vim /usr/local/php/etc/php.ini
代码语言:javascript
复制[root@hf-01 phpredis-develop]# vim /usr/local/php/etc/php.ini
可以将配置的一行放在文件最后面,也可以搜索/exextension,放到相关的下面
extension = redis.so
然后保存退出
- 再来查看是否有redis模块,会看到已经加载了
代码语言:javascript
复制[root@hf-01 phpredis-develop]# /usr/local/php/bin/php -m |grep redis
redis
[root@hf-01 phpredis-develop]#
总结
- 如果你想编译一个模块,而且他自带的源码包目录/usr/local/src/php-5.6.30/ext 下有,那么只需要进行以下一些步骤,就可以完成扩展模块新增
- 在你需要增加的拓展模块的目录下执行 /usr/local/php/bin/phpize ,生成一个configure 文件
- 执行 ./configure –with-php-config=/usr/local/php/bin/php-config 配置php-config文件
- 开始编译 make
- 编译后移动到目录 make install
- 修改配置文件vim /usr/local/php/etc/php.ini ,新增所需extension=xxxxxxx.so 拓展模块
关于扩展板块
- 在PHP的源码包中没有第三方模块的包,但是在PHP源码包的/ext/目录下有好多扩展模块,如果所需要的扩展模块在该目录下,可以直接进行安装
- 在源码包中安装模块
代码语言:javascript
复制[root@hf-01 ~]# cd /usr/local/src/php-5.6.30/
[root@hf-01 php-5.6.30]# ls
acinclude.m4 netware
aclocal.m4 NEWS
build pear
buildconf php5.spec
buildconf.bat php5.spec.in
CODING_STANDARDS php.gif
config.guess php.ini-development
config.log php.ini-production
config.nice README.EXT_SKEL
config.status README.GIT-RULES
config.sub README.input_filter
configure README.MAILINGLIST_RULES
configure.in README.md
CREDITS README.namespaces
ext README.NEW-OUTPUT-API
EXTENSIONS README.PARAMETER_PARSING_API
footer README.REDIST.BINS
generated_lists README.RELEASE_PROCESS
genfiles README.SELF-CONTAINED-EXTENSIONS
header README.STREAMS
include README.SUBMITTING_PATCH
INSTALL README.TESTING
install-sh README.TESTING2
libphp5.la README.UNIX-BUILD-SYSTEM
libs README.WIN32-BUILD-SYSTEM
libtool run-tests.php
LICENSE sapi
ltmain.sh scripts
main server-tests-config.php
makedist server-tests.php
Makefile snapshot
Makefile.frag stamp-h.in
Makefile.fragments stub.c
Makefile.gcov tests
Makefile.global travis
Makefile.objects TSRM
makerpm UPGRADING
meta_ccld UPGRADING.INTERNALS
missing vcsclean
mkinstalldirs win32
modules Zend
[root@hf-01 php-5.6.30]#
- 在php的源码包中,有一个ext目录,这个目录下有很多的模块
代码语言:javascript
复制[root@hf-01 php-5.6.30]# cd ext/
[root@hf-01 ext]# ls
bcmath ftp mysqli pgsql standard
bz2 gd mysqlnd phar sybase_ct
calendar gettext oci8 posix sysvmsg
com_dotnet gmp odbc pspell sysvsem
ctype hash opcache readline sysvshm
curl iconv openssl recode tidy
date imap pcntl reflection tokenizer
dba interbase pcre session wddx
dom intl pdo shmop xml
enchant json pdo_dblib simplexml xmlreader
ereg ldap pdo_firebird skeleton xmlrpc
exif libxml pdo_mysql snmp xmlwriter
ext_skel mbstring pdo_oci soap xsl
ext_skel_win32.php mcrypt pdo_odbc sockets zip
fileinfo mssql pdo_pgsql spl zlib
filter mysql pdo_sqlite sqlite3
[root@hf-01 ext]#
- 现在扩展模块中没有zip模块
代码语言:javascript
复制[root@hf-01 ext]# /usr/local/php/bin/php -m |grep zip
[root@hf-01 ext]#
- 编译zip模块
- 进入到zip目录下,并查看
代码语言:javascript
复制[root@hf-01 ext]# cd zip/
[root@hf-01 zip]# ls
config.m4 CREDITS lib php_zip.c tests zip_stream.c
config.w32 examples LICENSE_libzip php_zip.h TODO
[root@hf-01 zip]#
- 然后执行/usr/local/php/bin/phpize命令,目的是生成configure文件,否则无法进行编译安装
代码语言:javascript
复制[root@hf-01 zip]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@hf-01 zip]#
- 再去配置./configure --with-php-config=/usr/local/php/bin/php-config
代码语言:javascript
复制[root@hf-01 zip]# ./configure --with-php-config=/usr/local/php/bin/php-config
- 然后再去make
代码语言:javascript
复制[root@hf-01 zip]# make
- 再去make install
代码语言:javascript
复制[root@hf-01 zip]# make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
[root@hf-01 zip]#
- 这时候再去查看会看到zip模块的出现
代码语言:javascript
复制[root@hf-01 zip]# ls /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
opcache.so redis.so zip.so
[root@hf-01 zip]#