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模块,那就使用扩展模块编译
- 查看模块
[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/目录下
[root@hf-01 ~]# cd /usr/local/src/
[root@hf-01 src]#
- 下载redis包
[root@hf-01 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
- 而后更改包的名称
[root@hf-01 src]# mv develop phpredis-develop.zip
[root@hf-01 src]#
- 把安装包解压
[root@hf-01 src]# unzip phpredis-develop.zip
- 查看解压包
[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包下面
[root@hf-01 src]# cd phpredis-develop
[root@hf-01 phpredis-develop]#
- 编译方法有些特殊,须要先作phpize的操做,目的是为了生成configure文件——>由于编译一个源码包,必需要先有configure,不然是没法去配置的
[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.
[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
[root@hf-01 phpredis-develop]# ./configure --with-php-config=/usr/local/php/bin/php-config
- 再去make
[root@hf-01 phpredis-develop]# make
- 而后在make install
- make install会把 .so 文件放到/usr/local/php/lib/php/extensions/no-debug-zts-20131226/目录下来
[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 文件
[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模块
[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 下去
[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
[root@hf-01 phpredis-develop]# vim /usr/local/php/etc/php.ini
能够将配置的一行放在文件最后面,也能够搜索/exextension,放到相关的下面
extension = redis.so
而后保存退出
- 再来查看是否有redis模块,会看到已经加载了
[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/目录下有好多扩展模块,若是所须要的扩展模块在该目录下,能够直接进行安装
- 在源码包中安装模块
[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目录,这个目录下有不少的模块
[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模块
[root@hf-01 ext]# /usr/local/php/bin/php -m |grep zip
[root@hf-01 ext]#
- 编译zip模块
- 进入到zip目录下,并查看
[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文件,不然没法进行编译安装
[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
[root@hf-01 zip]# ./configure --with-php-config=/usr/local/php/bin/php-config
- 而后再去make
[root@hf-01 zip]# make
- 再去make install
[root@hf-01 zip]# make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
[root@hf-01 zip]#
- 这时候再去查看会看到zip模块的出现
[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]#