LAMP架构(9) PHP动态扩展模块安装

PHP动态扩展模块安装
在php安装时,调用了httpd的apxs工具将所需的php模块整体打包成一个动态共享模块(.so文件)以供httpd调用。后续若要增加另外的php模块,要么重新安装php添加所需模块,要么直接将需要的模块编译成扩展模块(.so文件),在php.ini配置文件中指定一下就可以使用,相对重新安装php要便捷很多。

查看已加载的php模块:
[root@aliyun ~]# /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@aliyun ~]#

安装扩展模块redis
[root@aliyun ~]# cd /usr/local/src/
[root@aliyun src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
--2018-06-04 12:02:12-- https://codeload.github.com/phpredis/phpredis/zip/develop
Resolving codeload.github.com (codeload.github.com)... 54.251.140.56, 13.250.162.133, 13.229.189.0
Connecting to codeload.github.com (codeload.github.com)|54.251.140.56|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘develop’
[ <=> ] 238,339 151KB/s in 1.5s
2018-06-04 12:02:30 (151 KB/s) - ‘develop’ saved [238339]
[root@aliyun src]# mv develop phpredis-develop.zip
[root@aliyun src]# unzip phpredis-develop.zip
[root@aliyun src]# cd phpredis-develop
[root@aliyun phpredis-develop]# ls
arrays.markdown common.h crc16.h INSTALL.markdown library.h php_redis.h redis_array_impl.c redis_cluster.h redis_session.h
cluster_library.c config.m4 CREDITS ISSUE_TEMPLATE.md mkdeb-apache2.sh README.markdown redis_array_impl.h redis_commands.c rpm
cluster_library.h config.w32 debian liblzf mkdeb.sh redis_array.c redis.c redis_commands.h serialize.list
cluster.markdown COPYING debian.control library.c package.xml redis_array.h redis_cluster.c redis_session.c tests
[root@aliyun phpredis-develop]# /usr/local/php/bin/phpize 初始化php扩展库的编译环境
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@aliyun phpredis-develop]# ls 红色部分为新增的文件
acinclude.m4 config.h.in redis_session.c aclocal.m4 config.sub install-sh ltmain.sh mkinstalldirs autom4te.cache configure Makefile.global run-tests.php build config.guess configure.in missing uster_library.c config.w32 debian.control library.c mkdeb-apache2.sh README.markdown redis.c tests cluster_library.h config.m4 COPYING INSTALL.markdown library.h mkdeb.sh redis_array.c redis_cluster.c redis_session.h
arrays.markdown cluster.markdown crc16.h redis_array.h redis_cluster.h rpm
common.h CREDITS ISSUE_TEMPLATE.md package.xml redis_array_impl.c redis_commands.c debian liblzf php_redis.h redis_array_impl.h redis_commands.h serialize.list
[root@aliyun phpredis-develop]# ./configure --with-php-config=/usr/local/php/bin/php-config 配置
[root@aliyun phpredis-develop]# echo $? 验证
0
[root@aliyun phpredis-develop]# make && make install 编译&安装
[root@aliyun phpredis-develop]# echo $? 验证
0
在输出信息最后可以看到如下信息:
Libraries have been installed in:
/usr/local/src/phpredis-develop/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
这是扩展模块的安装路径
[root@aliyun phpredis-develop]# echo $?
0
[root@aliyun phpredis-develop]# /usr/local/php/bin/php -i |grep extension_dir
查看扩展模块存放目录,此目录可以自定义,需在php.ini中指明路径
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@aliyun phpredis-develop]# ls /usr/local/php/lib/php/extensions/no-debug-zts-20131226
opcache.so redis.so 查看编译好的扩展模块(.so文件)
[root@aliyun phpredis-develop]# echo "extension = redis.so" >> /usr/local/php/etc/php.ini
追加这行配置 extension = redis.so到php.ini配置文件的最后一行

查看安装的扩展模块redis是否加载成功:
[root@aliyun phpredis-develop]# /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
redis 已经加载成功
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]
[root@aliyun phpredis-develop]#


猜你喜欢

转载自blog.csdn.net/langyue919/article/details/80566034