8.8 11.32

11.32 PHP擴展模塊安裝

 

php模塊已經安裝、編譯好了,但發現少了一個模塊(安裝時忘記/需求變更),此時可以以擴展模塊形式編譯一個新模塊(.so文件)

 

redis:一個nosql,通常在lamp架構下被當做一個緩存使用

 

以擴展模塊的形式編譯安裝一個redis模塊:

1 下載redis的安裝包

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

 

2 解壓包

[root@hyc-01-01 src]# mv develop phpredis-develop.zip

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

 

3 phpredis-develop.zip解壓後的文件中生成configure目錄

./configure生成可編譯文件就必須要在解壓後的包裏有這個目錄,否則無法配置

[root@hyc-01-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. 報錯

缺少包autoconf

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

[root@hyc-01-01 phpredis-develop]# /usr/local/php7/bin/phpize

Configuring for:

PHP Api Version:         20160303

Zend Module Api No:      20160303

Zend Extension Api No:   320160303

正常執行

[root@hyc-01-01 phpredis-develop]# ls

acinclude.m4       config.m4         install-sh         package.xml         redis_commands.h

aclocal.m4         config.sub        ISSUE_TEMPLATE.md  php_redis.h         redis_session.c

arrays.markdown    configure         liblzf             README.markdown     redis_session.h

autom4te.cache     configure.in      library.c          redis_array.c       rpm

build              config.w32        library.h          redis_array.h       run-tests.php

cluster_library.c  COPYING           ltmain.sh          redis_array_impl.c  serialize.list

cluster_library.h  crc16.h           Makefile.global    redis_array_impl.h  tests

cluster.markdown   CREDITS           missing            redis.c

common.h           debian            mkdeb-apache2.sh   redis_cluster.c

config.guess       debian.control    mkdeb.sh           redis_cluster.h

config.h.in        INSTALL.markdown  mkinstalldirs      redis_commands.c

[root@hyc-01-01 phpredis-develop]# pwd

/usr/local/src/phpredis-develop

 

4 生成可編譯文件

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

 

5 編譯並安裝

[root@hyc-01-01 phpredis-develop]# make

[root@hyc-01-01 phpredis-develop]# make install

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

make install會把redis.so文件放到/usr/local/php7/lib/php/extensions/no-debug-zts-20160303/目錄下

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

 

檢查php支持的擴展模塊:

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

發現php支持的擴展模塊中不包含redis模塊

 

配置在php加載redis模塊:

找到擴展模塊所在路徑:

[root@hyc-01-01 lib]# /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模塊配置文件:

[root@hyc-01-01 lib]# vim /usr/local/php7/etc/php.ini

920

 921 ;extension=php_soap.dll

 922 ;extension=php_sockets.dll

 923 ;extension=php_sqlite3.dll

 924 ;extension=php_tidy.dll

 925 ;extension=php_xmlrpc.dll

 926 ;extension=php_xsl.dll

 927 extension=redis.so

[root@hyc-01-01 lib]# /usr/local/php7/bin/php -m|grep redis

redis redis模塊加載成功

 

redis等模塊屬於第三方,不是php自帶,使用時需要專門下載

php源碼包中有ext目錄,該目錄下有很多模塊:

[root@hyc-01-01 php-7.1.6]# ls ext

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

[root@hyc-01-01 php-7.1.6]# pwd

/usr/local/src/php-7.1.6

ext目錄下存在某個包,則在安裝配置模塊時不需要下載,只要進入對應包的目錄,執行/usr/local/php7/bin/phpize即可在該目錄下生成configure文件,然後再生成可編譯文件,編譯、安裝即可

生成可編譯文件(即執行./configure時)需要跟參數--with-php-config=/usr/local/php7/bin/php-config

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章