十一周三次课

十一周三次课

11.32PHP动态扩展模块安装

• /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@tianqi-01 phpredis-develop]# /usr/local/php7/bin/php -m
[PHP Modules]
bz2
Core
ctype
date
dom
exif
fileinfo
filter
gd
hash
iconv
json
libxml
mbstring
mcrypt
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@tianqi-01 phpredis-develop]# 

2.然后切换到/usr/local/src/目录下

[root@tianqi-01 php-7.1.6]# cd /usr/local/src/
[root@tianqi-01 src]# 

3.下载redis包

  • redis模块,在LAMP通常用作缓存

[root@tianqi-01 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop

4.查看并更改包的名称

[root@tianqi-01 src]# ls
?                 apr-util-1.6.1.tar.bz2  httpd-2.2.34.tar.gz                 mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz  php-7.1.6.tar.bz2
apr-1.6.3         d?                      httpd-2.4.29                        php-5.6.30
apr-1.6.3.tar.gz  develop                 httpd-2.4.29.tar.gz                 php-5.6.30.tar.gz
apr-util-1.6.1    httpd-2.2.34            mariadb-10.2.6-linux-x86_64.tar.gz  php-7.1.6
[root@tianqi-01 src]# mv develop phpredis-develop.zip
[root@tianqi-01 src]# 

5.解压安装包

[root@tianqi-01 src]# unzip phpredis-develop.zip 

6.查看解压包

[root@tianqi-01 src]# ls
?                 apr-util-1.6.1.tar.bz2  httpd-2.4.29                               php-5.6.30         phpredis-develop
apr-1.6.3         d?                      httpd-2.4.29.tar.gz                        php-5.6.30.tar.gz  phpredis-develop.zip
apr-1.6.3.tar.gz  httpd-2.2.34            mariadb-10.2.6-linux-x86_64.tar.gz         php-7.1.6
apr-util-1.6.1    httpd-2.2.34.tar.gz     mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz  php-7.1.6.tar.bz2
[root@tianqi-01 src]# 

7.切换到phpredis-develop目录下面

[root@tianqi-01 src]# cd phpredis-develop
[root@tianqi-01 phpredis-develop]# 

8.编译方法有些特殊,需要先做phpize的操作,目的是为了生成configure文件——>因为编译一个源码包,必须要先有configure,否则是无法去配置的

  • 这里使用的是php7做的实验

[root@tianqi-01 phpredis-develop]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

[root@tianqi-01 phpredis-develop]# 

  • 报错
    • 缺少autoconf包
  • 解决办法
    • yum install -y autoconf

[root@tianqi-01 phpredis-develop]# yum install -y autoconf

[root@tianqi-01 phpredis-develop]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[root@tianqi-01 phpredis-develop]# 

9.这是ls会看到生成了一个configure文件

[root@tianqi-01 phpredis-develop]# ls
acinclude.m4       cluster.markdown  configure.in    install-sh         missing           redis_array.c       redis_commands.c  tests
aclocal.m4         common.h          config.w32      ISSUE_TEMPLATE.md  mkdeb-apache2.sh  redis_array.h       redis_commands.h
arrays.markdown    config.guess      COPYING         liblzf             mkdeb.sh          redis_array_impl.c  redis_session.c
autom4te.cache     config.h.in       crc16.h         library.c          mkinstalldirs     redis_array_impl.h  redis_session.h
build              config.m4         CREDITS         library.h          package.xml       redis.c             rpm
cluster_library.c  config.sub        debian          ltmain.sh          php_redis.h       redis_cluster.c     run-tests.php
cluster_library.h  configure         debian.control  Makefile.global    README.markdown   redis_cluster.h     serialize.list
[root@tianqi-01 phpredis-develop]# 

10.然后再去配置./configure --with-php-config=/usr/local/php7/bin/php-config

[root@tianqi-01 phpredis-develop]# ./configure --with-php-config=/usr/local/php7/bin/php-config

11.用echo $?查看配置是否成功

[root@tianqi-01 phpredis-develop]# echo $?
0
[root@tianqi-01 phpredis-develop]# 

12.使用make && make install进行编译

[root@tianqi-01 phpredis-develop]# make && make install

  • make install会把 .so 文件放到/usr/local/php7/lib/php/extensions/no-debug-zts-20160303/中来

13.用echo $?查看配置是否成功

[root@tianqi-01 phpredis-develop]# echo $?
0
[root@tianqi-01 phpredis-develop]# 

14.这时可以ls 查看下,会看到生成了 redis.so 文件

  • redis.so文件,就是我们需要的扩展模块

[root@tianqi-01 phpredis-develop]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
opcache.so  redis.so
[root@tianqi-01 phpredis-develop]# 

15.现在php还是不支持 redis模块的,可以grep查看下,会看到并没有 redis模块

[root@tianqi-01 phpredis-develop]# /usr/local/php7/bin/php -m |grep redis
[root@tianqi-01 phpredis-develop]# 

16.所以需要去配置下,加载redis模块,去编辑配置文件

17.配置文件前,先去查看扩展模块存放目录

  • /usr/local/php/bin/php -i |grep extension_dir //查看扩展模块存放目录,我们可以在php.ini中去自定义该路径
  • 所有的扩展模块,都会默认放到 /usr/local/php/lib/php/extensions/no-debug-zts-20130303下去

[root@tianqi-01 phpredis-develop]# /usr/local/php/bin/php -i |grep extension_dir
PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0
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@tianqi-01 phpredis-develop]# 

18.编辑php.ini文件,增加一行配置

  • vim /usr/local/php7/etc/php.ini

[root@tianqi-01 phpredis-develop]# vim /usr/local/php7/etc/php.ini

//可以将配置的一行放在文件最后面,也可以搜索/extension,放到相关的下面

extension=redis.so

19.再来查看是否有redis模块,会看到已经加载了

[root@tianqi-01 phpredis-develop]# /usr/local/php7/bin/php -m |grep redis
redis
[root@tianqi-01 phpredis-develop]# 

总结

  • 如果你想编译一个模块,而且它自带的源码包目录/usr/local/src/php-7.1.6/ext 下有,那么只需要进行以下一些步骤,就可以完成扩展模块新增
  1. 在你需要增加的拓展模块的目录下执行 /usr/local/php7/bin/phpize ,生成一个configure 文件
  2. 执行 ./configure --with-php-config=/usr/local/php7/bin/php-config 配置php-config文件
  3. 开始编译 make
  4. 编译后移动到目录 make install
  5. 修改配置文件vim /usr/local/php7/etc/php.ini ,新增所需extension=xxxxxxx.so 拓展模块

关于扩展板块

  • 在PHP的源码包中没有第三方模块的包,但是在PHP源码包的/ext/目录下有好多扩展模块,如果所需要的扩展模块在该目录下,可以直接进行安装

1.在源码包中安装模块

[root@tianqi-01 ext]# cd /usr/local/src/php-7.1.6/
[root@tianqi-01 php-7.1.6]# ls

acinclude.m4      CONTRIBUTING.md  LICENSE             modules                   README.namespaces                 scripts
aclocal.m4        CREDITS          ltmain.sh           netware                   README.NEW-OUTPUT-API             server-tests-config.php
appveyor          ext              main                NEWS                      README.PARAMETER_PARSING_API      server-tests.php
build             EXTENSIONS       makedist            pear                      README.REDIST.BINS                snapshot
buildconf         footer           Makefile            php7.spec                 README.RELEASE_PROCESS            stamp-h.in
buildconf.bat     generated_lists  Makefile.frag       php7.spec.in              README.SELF-CONTAINED-EXTENSIONS  stub.c
CODING_STANDARDS  genfiles         Makefile.fragments  php.gif                   README.STREAMS                    tests
config.guess      header           Makefile.gcov       php.ini-development       README.SUBMITTING_PATCH           travis
config.log        include          Makefile.global     php.ini-production        README.TESTING                    TSRM
config.nice       INSTALL          Makefile.objects    README.EXT_SKEL           README.TESTING2                   UPGRADING
config.status     install-sh       makerpm             README.GIT-RULES          README.UNIX-BUILD-SYSTEM          UPGRADING.INTERNALS
config.sub        libphp7.la       meta_ccld           README.input_filter       README.WIN32-BUILD-SYSTEM         vcsclean
configure         libs             missing             README.MAILINGLIST_RULES  run-tests.php                     win32
configure.in      libtool          mkinstalldirs       README.md                 sapi                              Zend
[root@tianqi-01 php-7.1.6]# 

2.在php的源码包中,有一个ext目录,这个目录下有很多的模块

[root@tianqi-01 php-7.1.6]# cd ext/
[root@tianqi-01 ext]# ls

bcmath      dba                 filter   imap       mcrypt   pcntl         pdo_odbc    readline    snmp      sysvsem    xmlrpc
bz2         dom                 ftp      interbase  mysqli   pcre          pdo_pgsql   recode      soap      sysvshm    xmlwriter
calendar    enchant             gd       intl       mysqlnd  pdo           pdo_sqlite  reflection  sockets   tidy       xsl
com_dotnet  exif                gettext  json       oci8     pdo_dblib     pgsql       session     spl       tokenizer  zip
ctype       ext_skel            gmp      ldap       odbc     pdo_firebird  phar        shmop       sqlite3   wddx       zlib
curl        ext_skel_win32.php  hash     libxml     opcache  pdo_mysql     posix       simplexml   standard  xml
date        fileinfo            iconv    mbstring   openssl  pdo_oci       pspell      skeleton    sysvmsg   xmlreader
[root@tianqi-01 ext]# 

3.现在扩展模块中没有zip模块

[root@tianqi-01 ext]# /usr/local/php7/bin/php -m |grep zip
[root@tianqi-01 ext]# 

4.编译zip模块

5.进入到zip目录下,并查看

[root@tianqi-01 ext]# cd zip/
[root@tianqi-01 zip]# ls

config.m4  config.w32  CREDITS  examples  lib  LICENSE_libzip  php_zip.c  php_zip.h  tests  TODO  zip_stream.c
[root@tianqi-01 zip]# 

6.然后执行/usr/local/php7/bin/phpize命令,目的是生成configure文件,否则无法进行编译安装

[root@tianqi-01 zip]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
[root@tianqi-01 zip]# 

7.再去配置./configure --with-php-config=/usr/local/php7/bin/php-config

[root@tianqi-01 zip]# ./configure --with-php-config=/usr/local/php7/bin/php-config

[root@tianqi-01 zip]# echo $?
0
[root@tianqi-01 zip]# 

8.执行make && make install进行编译

[root@tianqi-01 zip]# make && make install

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

这里显示扩展模块的目录

[root@tianqi-01 zip]# echo $?
0
[root@tianqi-01 zip]# 

9.这时候再去查看会看到zip模块的出现

[root@tianqi-01 zip]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
opcache.so  redis.so  zip.so
[root@tianqi-01 zip]# 

友情链接:阿铭Linux

转载于:https://my.oschina.net/u/3744518/blog/1631302

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值