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
[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.
[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

- 而后再去配置./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
[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
而后保存退出
[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 下有,那么只须要进行如下一些步骤,就能够完成扩展模块新增
- 在你须要增长的拓展模块的目录下执行 /usr/local/php7/bin/phpize ,生成一个configure 文件
- 执行 ./configure –with-php-config=/usr/local/php7/bin/php-config 配置php-config文件
- 开始编译 make
- 编译后移动到目录 make install
- 修改配置文件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
[root@yong-02 ext]# /usr/local/php7/bin/php -m |grep 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
- 而后执行/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
[root@yong-02 zip]# make
[root@yong-02 zip]# make install
Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
[root@yong-02 zip]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
opcache.so redis.so zip.so