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@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 ~]#
- 而後切換到/usr/local/src/目錄下
[root@hf-01 ~]# cd /usr/local/src/
[root@hf-01 src]#
- 下載redis包
[root@hf-01 src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
- 而後更改包的名稱
[root@hf-01 src]# mv develop phpredis-develop.zip
[root@hf-01 src]#
- 把安裝包解壓
[root@hf-01 src]# unzip phpredis-develop.zip
- 查看解壓包
[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]#
- 切換到phpredis-develop包下面
[root@hf-01 src]# cd phpredis-develop
[root@hf-01 phpredis-develop]#
- 編譯方法有些特殊,須要先作phpize的操做,目的是爲了生成configure文件——>由於編譯一個源碼包,必需要先有configure,不然是沒法去配置的
[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.
[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]#
- 這時ls 能夠查看到configure文件
- 而後再去配置./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
- 再去make
[root@hf-01 phpredis-develop]# make
- 而後在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]#
- 這時能夠ls 查看下,會看到生成了 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]#
- 如今php仍是不支持 redis模塊的,能夠grep查看下,會看到並無 redis模塊
[root@hf-01 phpredis-develop]# /usr/local/php/bin/php -m |grep redis
[root@hf-01 phpredis-develop]#
- 因此須要去配置下,加載redis模塊,去編輯配置文件
- 配置文件前,先去查看擴展模塊存放目錄
- /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]#
- 編輯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
而後保存退出
- 再來查看是否有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 下有,那麼只須要進行如下一些步驟,就能夠完成擴展模塊新增
- 在你須要增長的拓展模塊的目錄下執行 /usr/local/php/bin/phpize ,生成一個configure 文件
- 執行 ./configure –with-php-config=/usr/local/php/bin/php-config 配置php-config文件
- 開始編譯 make
- 編譯後移動到目錄 make install
- 修改配置文件vim /usr/local/php/etc/php.ini ,新增所需extension=xxxxxxx.so 拓展模塊
關於擴展板塊
- 在PHP的源碼包中沒有第三方模塊的包,可是在PHP源碼包的/ext/目錄下有好多擴展模塊,若是所須要的擴展模塊在該目錄下,能夠直接進行安裝
- 在源碼包中安裝模塊
[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]#
- 在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]#
- 如今擴展模塊中沒有zip模塊
[root@hf-01 ext]# /usr/local/php/bin/php -m |grep zip
[root@hf-01 ext]#
- 編譯zip模塊
- 進入到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]#
- 而後執行/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]#
- 再去配置./configure --with-php-config=/usr/local/php/bin/php-config
[root@hf-01 zip]# ./configure --with-php-config=/usr/local/php/bin/php-config
- 而後再去make
[root@hf-01 zip]# make
- 再去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]#
- 這時候再去查看會看到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]#