前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11.32 php扩展模块装安装

11.32 php扩展模块装安装

作者头像
运维小白
发布2022-01-06 14:04:07
8730
发布2022-01-06 14:04:07
举报
文章被收录于专栏:运维小白运维小白

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]# 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/12/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • php扩展模块装安装目录概要
  • php扩展模块装安装
    • 总结
    • 关于扩展板块
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档