11.32 php扩展模块装安装

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模块,那就使用扩展模块编译
  1. 查看模块
[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 ~]#
  1. 而后切换到/usr/local/src/目录下
[root@hf-01 ~]# cd /usr/local/src/
[root@hf-01 src]#
  1. 下载redis包
  • redis模块,在lamp一般用做缓存
[root@hf-01 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
  1. 而后更改包的名称
[root@hf-01 src]# mv develop phpredis-develop.zip
[root@hf-01 src]#
  1. 把安装包解压
[root@hf-01 src]# unzip phpredis-develop.zip
  1. 查看解压包
[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]#
  1. 切换到phpredis-develop包下面
[root@hf-01 src]# cd phpredis-develop
[root@hf-01 phpredis-develop]#
  1. 编译方法有些特殊,须要先作phpize的操做,目的是为了生成configure文件——>由于编译一个源码包,必需要先有configure,不然是没法去配置的
  • 这里使用的是php5作的实验
[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.
  • 报错
    • 缺乏autoconf包
  • 解决办法
    • yum install -y autoconf
[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]#
  1. 这时ls 能够查看到configure文件
  2. 而后再去配置./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
  1. 再去make
[root@hf-01 phpredis-develop]# make
  1. 而后在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]#
  1. 这时能够ls 查看下,会看到生成了 redis.so 文件
  • 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]#
  1. 如今php仍是不支持 redis模块的,能够grep查看下,会看到并无 redis模块
[root@hf-01 phpredis-develop]# /usr/local/php/bin/php -m |grep redis
[root@hf-01 phpredis-develop]#
  1. 因此须要去配置下,加载redis模块,去编辑配置文件
  2. 配置文件前,先去查看扩展模块存放目录
  • /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]#
  1. 编辑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

而后保存退出
  1. 再来查看是否有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 下有,那么只须要进行如下一些步骤,就能够完成扩展模块新增
  1. 在你须要增长的拓展模块的目录下执行 /usr/local/php/bin/phpize ,生成一个configure 文件
  2. 执行 ./configure –with-php-config=/usr/local/php/bin/php-config 配置php-config文件
  3. 开始编译 make
  4. 编译后移动到目录 make install
  5. 修改配置文件vim /usr/local/php/etc/php.ini ,新增所需extension=xxxxxxx.so 拓展模块

关于扩展板块

  • 在PHP的源码包中没有第三方模块的包,可是在PHP源码包的/ext/目录下有好多扩展模块,若是所须要的扩展模块在该目录下,能够直接进行安装
  1. 在源码包中安装模块
[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]#
  1. 在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]#
  1. 如今扩展模块中没有zip模块
[root@hf-01 ext]# /usr/local/php/bin/php -m |grep zip
[root@hf-01 ext]#
  1. 编译zip模块
  2. 进入到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]#
  1. 而后执行/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]#
  1. 再去配置./configure --with-php-config=/usr/local/php/bin/php-config
[root@hf-01 zip]# ./configure --with-php-config=/usr/local/php/bin/php-config
  1. 而后再去make
[root@hf-01 zip]# make
  1. 再去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]#
  1. 这时候再去查看会看到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]#
相关文章
相关标签/搜索