Linux基礎(day47)

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]#

擴展

  1. apache rewrite教程

apache rewrite教程php

  1. apache rewrite 出現死循環html

  2. php錯誤日誌級別參考mysql

  3. php開啓短標籤linux

  4. php.ini詳解git

相關文章
相關標籤/搜索