PHP擴展模塊安裝

PHP擴展模塊安裝

編譯httpd時,有涉及動態和靜態模塊,PHP也一樣有靜態與動態之分,之前所涉及到的PHP安裝都全部爲靜態,並沒有任何動態的模塊,所謂動態,就是一個獨立存在的.so文件,在httpd中PHP就是以動態模塊的形式被加載的。PHP一旦編譯完成後,要想再增加一個功能的話,要麼重新編譯PHP,要麼直接編譯一個擴展模塊(生成一個.so文件),然後在php.ini中配置一下,就可以被加載使用了。


1.查看PHP加載了哪些模塊

[root@gary-tao ~]# /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]


2.安裝一個PHP的redis擴展模塊。

[root@gary-tao ~]# cd /usr/local/src/

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

[root@gary-tao src]# mv develop phpredis-develop.zip

[root@gary-tao src]# unzip phpredis-develop.zip  //yum install -y unzip

[root@gary-tao src]# cd phpredis-develop

[root@gary-tao phpredis-develop]# 

[root@gary-tao src]# cd phpredis-develop

[root@gary-tao 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.

[root@gary-tao phpredis-develop]# yum install -y autoconf

[root@gary-tao phpredis-develop]# /usr/local/php7/bin/phpize

Configuring for:

PHP Api Version:         20160303

Zend Module Api No:      20160303

Zend Extension Api No:   320160303

[root@gary-tao phpredis-develop]# ls

acinclude.m4       cluster_library.h  config.sub    CREDITS            library.c         mkdeb.sh         redis_array.h       redis_commands.c  serialize.list

aclocal.m4         cluster.markdown   configure     debian             library.h         mkinstalldirs    redis_array_impl.c  redis_commands.h  tests

arrays.markdown    common.h           configure.in  debian.control     ltmain.sh         package.xml      redis_array_impl.h  redis_session.c

autom4te.cache     config.guess       config.w32    install-sh         Makefile.global   php_redis.h      redis.c             redis_session.h

build              config.h.in        COPYING       ISSUE_TEMPLATE.md  missing           README.markdown  redis_cluster.c     rpm

cluster_library.c  config.m4          crc16.h       liblzf             mkdeb-apache2.sh  redis_array.c    redis_cluster.h     run-tests.php

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

[root@gary-tao phpredis-develop]# echo $?

0

[root@gary-tao phpredis-develop]# make

[root@gary-tao phpredis-develop]# echo $?

0

[root@gary-tao phpredis-develop]# make install

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

[root@gary-tao phpredis-develop]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

opcache.so  redis.so

[root@gary-tao 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@gary-tao phpredis-develop]# /usr/local/php7/bin/php -m |grep redis

[root@gary-tao phpredis-develop]# /usr/local/php/bin/php -i |grep extension_dir  //查看擴展模塊存放目錄,我們可以在php.ini中去自定義該路徑 

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@gary-tao phpredis-develop]# vim /usr/local/php7/etc/php.ini  //增加一行配置(可以放到文件最後一行)


定義如下:

extension = redis.so


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

redis


增加示例圖:


報錯:

缺少autoconf包,安裝yum install -y autoconf


這個不影響使用,如果要去掉它,可以在php.ini裏設置一下timezone那個參數



舉例:

你想編譯一個擴展模塊的時候,如果它自帶的源碼包ext下有這個目錄,那就可以直接在目錄下編譯它,如果沒有那就需要去官網下載,下面是給大家舉例一個zip模塊實驗操作如下:


[root@gary-tao ~]# cd /usr/local/src/php-7.1.6

[root@gary-tao php-7.1.6]# ls

acinclude.m4      configure        install-sh          Makefile.global   php.gif                       README.RELEASE_PROCESS            server-tests.php

aclocal.m4        configure.in     libphp7.la          Makefile.objects  php.ini-development           README.SELF-CONTAINED-EXTENSIONS  snapshot

appveyor          CONTRIBUTING.md  libs                makerpm           php.ini-production            README.STREAMS                    stamp-h.in

build             CREDITS          libtool             meta_ccld         README.EXT_SKEL               README.SUBMITTING_PATCH           stub.c

buildconf         ext              LICENSE             missing           README.GIT-RULES              README.TESTING                    tests

buildconf.bat     EXTENSIONS       ltmain.sh           mkinstalldirs     README.input_filter           README.TESTING2                   travis

CODING_STANDARDS  footer           main                modules           README.MAILINGLIST_RULES      README.UNIX-BUILD-SYSTEM          TSRM

config.guess      generated_lists  makedist            netware           README.md                     README.WIN32-BUILD-SYSTEM         UPGRADING

config.log        genfiles         Makefile            NEWS              README.namespaces             run-tests.php                     UPGRADING.INTERNALS

config.nice       header           Makefile.frag       pear              README.NEW-OUTPUT-API         sapi                              vcsclean

config.status     include          Makefile.fragments  php7.spec         README.PARAMETER_PARSING_API  scripts                           win32

config.sub        INSTALL          Makefile.gcov       php7.spec.in      README.REDIST.BINS            server-tests-config.php           Zend

[root@gary-tao php-7.1.6]# cd ext/

[root@gary-tao ext]# ls

bcmath      date      ext_skel_win32.php  gmp        json      mysqlnd  pcre          pdo_odbc    pspell      simplexml  sqlite3   tokenizer  xsl

bz2         dba       fileinfo            hash       ldap      oci8     pdo           pdo_pgsql   readline    skeleton   standard  wddx       zip

calendar    dom       filter              iconv      libxml    odbc     pdo_dblib     pdo_sqlite  recode      snmp       sysvmsg   xml        zlib

com_dotnet  enchant   ftp                 imap       mbstring  opcache  pdo_firebird  pgsql       reflection  soap       sysvsem   xmlreader

ctype       exif      gd                  interbase  mcrypt    openssl  pdo_mysql     phar        session     sockets    sysvshm   xmlrpc

curl        ext_skel  gettext             intl       mysqli    pcntl    pdo_oci       posix       shmop       spl        tidy      xmlwriter

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

[root@gary-tao ext]# cd zip/

[root@gary-tao zip]# ls

config.m4  config.w32  CREDITS  examples  lib  LICENSE_libzip  php_zip.c  php_zip.h  tests  TODO  zip_stream.c

[root@gary-tao zip]# /usr/local/php7/bin/phpize

Configuring for:

PHP Api Version:         20160303

Zend Module Api No:      20160303

Zend Extension Api No:   320160303

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

[root@gary-tao zip]# make

[root@gary-tao zip]# echo $?

0

[root@gary-tao zip]# make install

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

[root@gary-tao zip]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

opcache.so  redis.so  zip.so


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