十一週三次課

十一週三次課php

11.32PHP動態擴展模塊安裝mysql

• /usr/local/php/bin/php -m //查看模塊linux

• 下面安裝一個redis的模塊git

• cd /usr/local/src/github

• wget https://codeload.github.com/phpredis/phpredis/zip/developredis

• mv develop phpredis-develop.zipsql

• unzip phpredis-develop.zipapache

• cd phpredis-developjson

• /usr/local/php/bin/phpize //生成configure文件vim

• ./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

相關文章
相關標籤/搜索