11.32 php扩展模块装安装

2022-01-06 14:04:07 浏览数 (1)

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. 查看模块
代码语言: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 ~]# 
  1. 然后切换到/usr/local/src/目录下
代码语言:javascript复制
[root@hf-01 ~]# cd /usr/local/src/
[root@hf-01 src]# 
  1. 下载redis包
  • redis模块,在lamp通常用作缓存
代码语言:javascript复制
[root@hf-01 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
  1. 然后更改包的名称
代码语言:javascript复制
[root@hf-01 src]# mv develop phpredis-develop.zip
[root@hf-01 src]# 
  1. 把安装包解压
代码语言:javascript复制
[root@hf-01 src]# unzip phpredis-develop.zip
  1. 查看解压包
代码语言: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]# 
  1. 切换到phpredis-develop包下面
代码语言:javascript复制
[root@hf-01 src]# cd phpredis-develop
[root@hf-01 phpredis-develop]# 
  1. 编译方法有些特殊,需要先做phpize的操作,目的是为了生成configure文件——>因为编译一个源码包,必须要先有configure,否则是无法去配置的
  • 这里使用的是php5做的实验
代码语言: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.
  • 报错
    • 缺少autoconf包
  • 解决办法
    • yum install -y autoconf
代码语言: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]# 
  1. 这时ls 可以查看到configure文件
  2. 然后再去配置./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
  1. 再去make
代码语言:javascript复制
[root@hf-01 phpredis-develop]# make
  1. 然后在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]# 
  1. 这时可以ls 查看下,会看到生成了 redis.so 文件
  • 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]# 
  1. 现在php还是不支持 redis模块的,可以grep查看下,会看到并没有 redis模块
代码语言:javascript复制
[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 下去
代码语言: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]# 
  1. 编辑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

然后保存退出
  1. 再来查看是否有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 下有,那么只需要进行以下一些步骤,就可以完成扩展模块新增
  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. 在源码包中安装模块
代码语言: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]# 
  1. 在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]# 
  1. 现在扩展模块中没有zip模块
代码语言:javascript复制
[root@hf-01 ext]# /usr/local/php/bin/php -m |grep zip
[root@hf-01 ext]# 
  1. 编译zip模块
  2. 进入到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]# 
  1. 然后执行/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]# 
  1. 再去配置./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
  1. 然后再去make
代码语言:javascript复制
[root@hf-01 zip]# make
  1. 再去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]# 
  1. 这时候再去查看会看到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]# 

0 人点赞