php擴展模塊裝安裝

擴展
apache rewrite教程http://coffeelet.blog.163.com/blog/static/13515745320115842755199/http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html
apache rewrite 出現死循環 http://ask.apelearn.com/question/1043
php錯誤日誌級別參考 http://ask.apelearn.com/question/6973
php開啓短標籤 http://ask.apelearn.com/question/120
php.ini詳解 http://legolas.blog.51cto.com/2682485/493917

 

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模塊,那就使用擴展模塊編譯
  • 查看模塊
[root@yong-02 src]# /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]
  • 下載redis包
  • redis模塊,在lamp一般用做緩存
[root@yong-02 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
  • 而後更改包的名稱
[root@yong-02 src]# mv develop phpredis-develop.zip
[root@yong-02 src]# ls
apr-1.6.3               httpd-2.4.33                               php-5.6.32.tar.bz2
apr-1.6.3.tar.gz        httpd-2.4.33.tar.gz                        php-7.1.6
apr-util-1.6.1          mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz  php-7.1.6.tar.bz2
apr-util-1.6.1.tar.bz2  php-5.6.32
  • 把安裝包解壓
[root@yong-02 src]# unzip phpredis-develop.zip
  • 查看解壓包
[root@yong-02 src]# ls
apr-1.6.3               httpd-2.4.33.tar.gz                        php-7.1.6.tar.bz2
apr-1.6.3.tar.gz        mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz  phpredis-develop
apr-util-1.6.1          php-5.6.32                                 phpredis-develop.zip
apr-util-1.6.1.tar.bz2  php-5.6.32.tar.bz2
httpd-2.4.33            php-7.1.6
  • 切換到phpredis-develop包下面
[root@yong-02 src]# cd phpredis-develop/
  • 編譯方法有些特殊,須要先作phpize的操做,目的是爲了生成configure文件——>由於編譯一個源碼包,必需要先有configure,不然是沒法去配置的
  • 這裏使用的是php7作的實驗
[root@yong-02 phpredis-develop]# /usr/local/php7/bin/phpize    //生成configure文件
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.
  • 報錯
    • 缺乏autoconf包
  • 解決辦法
    • yum install -y autoconf
[root@yong-02 phpredis-develop]# yum install -y autoconf

而後再去生成configure文件
[root@yong-02 phpredis-develop]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
  • 這時ls 能夠查看到configure文件

  • 而後再去配置./configure --with-php-config=/usr/local/php7/bin/php-config
[root@yong-02 phpredis-develop]# ./configure --with-php-config=/usr/local/php7/bin/php-config
  • 再去make
[root@yong-02 phpredis-develop]# make
  • 而後在make install
  • make install會把 .so 文件放到/usr/local/php7/lib/php/extensions/no-debug-zts-20160303/目錄下面
[root@yong-02 phpredis-develop]# make install
Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
  • 這時能夠ls 查看下,會看到生成了 redis.so 文件
  • redis.so文件,就是咱們須要的擴展模塊
[root@yong-02 phpredis-develop]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
opcache.so  redis.so
  • 如今php仍是不支持 redis模塊的,能夠grep查看下,會看到並無 redis模塊
[root@yong-02 phpredis-develop]# /usr/local/php7/bin/php -m |grep redis
[root@yong-02 phpredis-develop]#
  • 因此須要去配置下,加載redis模塊,去編輯配置文件
  • 配置文件前,先去查看擴展模塊存放目錄
  • /usr/local/php7/bin/php -i |grep extension_dir //查看擴展模塊存放目錄,咱們能夠在php.ini中去自定義該路徑
  • 全部的擴展模塊,都會默認放到/usr/local/php7/lib/php/extensions/no-debug-zts-20160303下去
[root@yong-02 phpredis-develop]# /usr/local/php7/bin/php -i |grep extension_dir
extension_dir => /usr/local/php7/lib/php/extensions/no-debug-zts-20160303 => /usr/local/php7/lib/php/extensions/no-debug-zts-20160303
sqlite3.extension_dir => no value => no value
  • 編輯php.ini文件,增長一行配置
  • vim /usr/local/php7/etc/php.ini
[root@yong-02 phpredis-develop]# vim /usr/local/php7/etc/php.ini

能夠將配置的一行放在文件最後面,也能夠搜索/exextension,放到相關的下面
extension = redis.so

而後保存退出
  • 再來查看是否有redis模塊,會看到已經加載了
[root@yong-02 phpredis-develop]# /usr/local/php7/bin/php -m |grep redis
redis
  • 另一種方法快速安裝redis.so模塊  /usr/local/php7/bin/pecl install redis

總結

  • 若是你想編譯一個模塊,並且他自帶的源碼包目錄/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/目錄下有好多擴展模塊,若是所須要的擴展模塊在該目錄下,能夠直接進行安裝
  • 在源碼包中安裝模塊,在php的源碼包中,有一個ext目錄,這個目錄下有不少的模塊
[root@yong-02 phpredis-develop]# cd /usr/local/src/php-7.1.6/ext/
[root@yong-02 ext]# ls
bcmath      ext_skel            interbase  opcache       pdo_sqlite  skeleton  tokenizer
bz2         ext_skel_win32.php  intl       openssl       pgsql       snmp      wddx
calendar    fileinfo            json       pcntl         phar        soap      xml
com_dotnet  filter              ldap       pcre          posix       sockets   xmlreader
ctype       ftp                 libxml     pdo           pspell      spl       xmlrpc
curl        gd                  mbstring   pdo_dblib     readline    sqlite3   xmlwriter
date        gettext             mcrypt     pdo_firebird  recode      standard  xsl
dba         gmp                 mysqli     pdo_mysql     reflection  sysvmsg   zip
dom         hash                mysqlnd    pdo_oci       session     sysvsem   zlib
enchant     iconv               oci8       pdo_odbc      shmop       sysvshm
exif        imap                odbc       pdo_pgsql     simplexml   tidy
  • 如今擴展模塊中沒有zip模塊
[root@yong-02 ext]# /usr/local/php7/bin/php -m |grep zip
  • 編譯zip模塊
  • 進入到zip目錄下,並查看
[root@yong-02 ext]# cd zip/
[root@yong-02 zip]# ls
config.m4   CREDITS   lib             php_zip.c  tests  zip_stream.c
config.w32  examples  LICENSE_libzip  php_zip.h  TODO
  1. 而後執行/usr/local/php7/bin/phpize命令,目的是生成configure文件,不然沒法進行編譯安裝
[root@yong-02 zip]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
  • 再去配置./configure --with-php-config=/usr/local/php7/bin/php-config
[root@yong-02 zip]# ./configure --with-php-config=/usr/local/php7/bin/php-config
  • 而後再去make
[root@yong-02 zip]# make
  • 再去make install
[root@yong-02 zip]# make install
Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
  • 這時候再去查看會看到zip模塊的出現
[root@yong-02 zip]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
opcache.so  redis.so  zip.so
相關文章
相關標籤/搜索