linux php安装xsl扩展,11.32 php扩展模块安装
- 11.32 php扩展模块安装
- 扩展
- apache rewrite教程 http://coffeelet.blog.163.com/blog/static/13515745320115842755199/ http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html
- apache rewrite 出现死循环 http://ask.apelearn.com/question/1043
- php错误日志级别参考 http://ask.apelearn.com/question/6973
- php开启短标签 http://ask.apelearn.com/question/120
- php.ini详解 http://legolas.blog.51cto.com/2682485/493917
# 11.32 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
-
```
Last login: Fri Oct 13 20:46:33 2017
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# ls
apr-1.6.2 httpd-2.4.27 php-5.6.30.tar.gz
apr-1.6.2.tar.gz httpd-2.4.27.tar.gz php-7.1.6
apr-util-1.6.0 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz php-7.1.6.tar.bz2
apr-util-1.6.0.tar.gz php-5.6.30
[root@localhost src]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
--2017-10-13 21:20:21-- https://codeload.github.com/phpredis/phpredis/zip/develop
正在解析主机 codeload.github.com (codeload.github.com)... 192.30.255.121, 192.30.255.120
正在连接 codeload.github.com (codeload.github.com)|192.30.255.121|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:未指定 [application/zip]
正在保存至: “develop”
[ <=> ] 224,195 116KB/s 用时 1.9s
2017-10-13 21:20:24 (116 KB/s) - “develop” 已保存 [224195]
[root@localhost src]# du -sh develop
220Kdevelop
[root@localhost src]# mv develop phpredis-develop.zip
[root@localhost src]# unzip phpredis-develop.zip
inflating: phpredis-develop/tests/RedisTest.php
inflating: phpredis-develop/tests/TestRedis.php
inflating: phpredis-develop/tests/TestSuite.php
inflating: phpredis-develop/tests/make-cluster.sh
inflating: phpredis-develop/tests/mkring.sh
[root@localhost src]#
```
- 进入phpredis-develop 目录下
```
[root@localhost src]# ls
apr-1.6.2 httpd-2.4.27.tar.gz php-7.1.6.tar.bz2
apr-1.6.2.tar.gz mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz phpredis-develop
apr-util-1.6.0 php-5.6.30 phpredis-develop.zip
apr-util-1.6.0.tar.gz php-5.6.30.tar.gz
httpd-2.4.27 php-7.1.6
[root@localhost src]# cd phpredis-develop
[root@localhost phpredis-develop]# ls
arrays.markdown CREDITS php_redis.h redis_commands.c
cluster_library.c debian README.markdown redis_commands.h
cluster_library.h debian.control redis_array.c redis_session.c
cluster.markdown ISSUE_TEMPLATE.md redis_array.h redis_session.h
common.h library.c redis_array_impl.c rpm
config.m4 library.h redis_array_impl.h serialize.list
config.w32 mkdeb-apache2.sh redis.c tests
COPYING mkdeb.sh redis_cluster.c
crc16.h package.xml redis_cluster.h
[root@localhost phpredis-develop]#
```
- 用php7 /usr/local/php/bin/phpize //生成configure文件
```
[root@localhost phpredis-develop]# /usr/local/php/bin/phpize
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@localhost phpredis-develop]#
```
- 显示没有生成 少一个包autoconf ,再继续生成./configure,
```
[root@localhost phpredis-develop]# yum install -y autoconf
已安装:
autoconf.noarch 0:2.69-11.el7
作为依赖被安装:
m4.x86_64 0:1.4.16-10.el7
完毕!
[root@localhost phpredis-develop]#
[root@localhost phpredis-develop]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
[root@localhost phpredis-develop]#
[root@localhost phpredis-develop]# ls
acinclude.m4 config.h.in debian.control mkinstalldirs redis_cluster.h
aclocal.m4 config.m4 install-sh package.xml redis_commands.c
arrays.markdown config.sub ISSUE_TEMPLATE.md php_redis.h redis_commands.h
autom4te.cache configure library.c README.markdown redis_session.c
build configure.in library.h redis_array.c redis_session.h
cluster_library.c config.w32 ltmain.sh redis_array.h rpm
cluster_library.h COPYING Makefile.global redis_array_impl.c run-tests.php
cluster.markdown crc16.h missing redis_array_impl.h serialize.list
common.h CREDITS mkdeb-apache2.sh redis.c tests
config.guess debian mkdeb.sh redis_cluster.c
[root@localhost phpredis-develop]#
```
- ./configure
```
[root@localhost phpredis-develop]# ./configure --with-php-config=/usr/local/php7/bin/php-config
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default
```
- make make install
```
[root@localhost phpredis-develop]# make
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'.
[root@localhost phpredis-develop]#
[root@localhost phpredis-develop]# make install
Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
[root@localhost phpredis-develop]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
opcache.so redis.so
[root@localhost phpredis-develop]#
```
- 生成了一个redis.so 这个文件就是我们要的扩展模块
- 现在php还不支持它,没有模块文件,现在还是不支持redis 的
```
[root@localhost 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@localhost phpredis-develop]#
[root@localhost phpredis-develop]# /usr/local/php7/bin/php -m |grep redis
[root@localhost phpredis-develop]#
```
- 所以你需要把它配置一下,把它加载一下,需要去编辑配置文件
- 先找一下扩展模块所在的路径在哪里
- /usr/local/php/bin/php -i |grep extension_dir //查看扩展模块存放目录,我们可以在php.ini中去自定义该路径
```
[root@localhost phpredis-develop]# /usr/local/php7/bin/php -i |grep -i 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
[root@localhost phpredis-develop]#
```
- 实际上就是我们刚刚看的目录,这个extension_dir 也可以定义的
```
[root@localhost phpredis-develop]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303
opcache.so redis.so
[root@localhost phpredis-develop]#
```
- 之后需要编辑下vi /usr/local/php7/etc/php.ini ,搜索extension, 在后面加上extension=redis.so
```
[root@localhost phpredis-develop]# vi /usr/local/php7/etc/php.ini
[PHP]
;;;;;;;;;;;;;;;;;;;
; About php.ini ;
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_fileinfo.dll
;extension=php_ftp.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_exif.dll ; Must be after mbstring as it depends on it
;extension=php_mysqli.dll
;extension=php_oci8_12c.dll ; Use with Oracle Database 12c Instant Client
;extension=php_openssl.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
extension=redis.so
; The MIBS data available in the PHP distribution must be installed.
:wq
```
- dll后缀名结尾的,都是Windows使用的模块
- 添加好配置以后查询模块是否存在
- 已经加载了 redis
```
[root@localhost phpredis-develop]# vi /usr/local/php7/etc/php.ini
[root@localhost phpredis-develop]# /usr/local/php7/bin/php -m |grep redis
redis
[root@localhost phpredis-develop]#
```
- 如果你想编译一个模块,而且他自带的源码包目录/usr/local/src/php-5.6.30/ext 下有,那么只需要进行以下一些步骤,就可以完成扩展模块新增
1、在你需要增加的拓展模块的目录下执行 /usr/local/php/bin/phpize ,生成一个configure 文件
2、执行 ./configure –with-php-config=/usr/local/php/bin/php-config 配置php-config文件
3、开始编译 make
4、编译后移动到目录 make install
5、修改配置文件vim /usr/local/php/etc/php.ini ,新增所需extension=xxxx.so 拓展模块
- 这就是php的扩展模块安装
- 当然还要一种方法 redis 和 是属于第三方的 ,它在php源码包里面本身是没有的
```
[root@localhost phpredis-develop]# cd
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# cd php-7.1.6
[root@localhost php-7.1.6]# ls
acinclude.m4 LICENSE README.namespaces
aclocal.m4 ltmain.sh README.NEW-OUTPUT-API
appveyor main README.PARAMETER_PARSING_API
build makedist README.REDIST.BINS
buildconf Makefile README.RELEASE_PROCESS
buildconf.bat Makefile.frag README.SELF-CONTAINED-EXTENSIONS
CODING_STANDARDS Makefile.fragments README.STREAMS
config.guess Makefile.gcov README.SUBMITTING_PATCH
config.log Makefile.global README.TESTING
config.nice Makefile.objects README.TESTING2
config.status makerpm README.UNIX-BUILD-SYSTEM
config.sub meta_ccld README.WIN32-BUILD-SYSTEM
configure missing run-tests.php
configure.in mkinstalldirs sapi
CONTRIBUTING.md modules scripts
CREDITS netware server-tests-config.php
ext NEWS server-tests.php
EXTENSIONS pear snapshot
footer php7.spec stamp-h.in
generated_lists php7.spec.in stub.c
genfiles php.gif tests
header php.ini-development travis
include php.ini-production TSRM
INSTALL README.EXT_SKEL UPGRADING
install-sh README.GIT-RULES UPGRADING.INTERNALS
libphp7.la README.input_filter vcsclean
libs README.MAILINGLIST_RULES win32
libtool README.md Zend
[root@localhost php-7.1.6]#
```
- 实际上在php源码包里面 有个 ext的目录,这个下面有很多的 这种 所谓的模块
```
[root@localhost php-7.1.6]# cd ext/
[root@localhost 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@localhost ext]#
[root@localhost ext]# /usr/local/php7/bin/php -m |grep zip
[root@localhost ext]#
```
- 比如说现在没有zip ,假如说没有zip
- 那我现在需要编译一个zip,先进入到zip目录下来,然后直接执行 /usr/local/php7/bin/phpize
```
[root@localhost ext]# /usr/local/php7/bin/php -m |grep zip
[root@localhost ext]# cd zip/
[root@localhost zip]# ls
config.m4 CREDITS lib php_zip.c tests zip_stream.c
config.w32 examples LICENSE_libzip php_zip.h TODO
[root@localhost zip]# /usr/local/php7/bin/phpize
Configuring for:
PHP Api Version: 20160303
Zend Module Api No: 20160303
Zend Extension Api No: 320160303
[root@localhost zip]#
```
- 也就是说你想编译一个扩展模块的时候,如果它 自带的源码包里面 ext 目录下有这个目录 ,那你就可以直接在这去编译它 不用去下载了
- /usr/local/php7/bin/phpize 完成之后呢,./configure
```
[root@localhost zip]# ./configure --with-php-config=/usr/local/php7/bin/php-config
creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
[root@localhost zip]#
```
- make ,make install
```
[root@localhost zip]# make
Build complete.
Don't forget to run 'make test'.
[root@localhost zip]# make install
Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
[root@localhost zip]#
[root@localhost zip]# ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/
opcache.so redis.so zip.so
[root@localhost zip]#
```
- 里面多了一个zip.so ,这个就是怎么去添加一个扩展模块
### 扩展
- 1. apache rewrite教程 http://coffeelet.blog.163.com/blog/static/13515745320115842755199/ http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html
- 2. apache rewrite 出现死循环 http://ask.apelearn.com/question/1043
我的一条规则
RewriteRule ^(.*) /111/$1 [R,L]
使用curl测试,没有问题,但是使用浏览器访问时,出现了无限循环。
本来访问的是 www.111.com 结果变成了 www.111.com/111/111/111/.....
虽然在最后加了 [L] 依然不管用,可能apache还是不够智能,一直满足条件就一直去匹配,一直去跳转。最后没招了只能再加一个条件。
RewriteCond %{REQUEST_URI} !^/111
RewriteRule ^(.*) /111/$1 [R,L]
这样就不再循环了。
- 3. php错误日志级别参考 http://ask.apelearn.com/question/6973
php的错误日志级别 error_report
; E_ALL 所有错误和警告(除E_STRICT外)
; E_ERROR 致命的错误。脚本的执行被暂停。
; E_RECOVERABLE_ERROR 大多数的致命错误。
; E_WARNING 非致命的运行时错误,只是警告,脚本的执行不会停止。
; E_PARSE 编译时解析错误,解析错误应该只由分析器生成。
; E_NOTICE 脚本运行时产生的提醒(往往是我们写的脚本里面的一些bug,比如某个变量没有定义),这个错误不会导致任务中断。
; E_STRICT 脚本运行时产生的提醒信息,会包含一些php抛出的让我们要如何修改的建议信息。
; E_CORE_ERROR 在php启动后发生的致命性错误
; E_CORE_WARNING 在php启动后发生的非致命性错误,也就是警告信息
; E_COMPILE_ERROR php编译时产生的致命性错误
; E_COMPILE_WARNING php编译时产生的警告信息
; E_USER_ERROR 用户生成的错误
; E_USER_WARNING 用户生成的警告
; E_USER_NOTICE 用户生成的提醒
& 表示并且
~ 表示非
| 表示或者
比如: error_reporting = E_ALL & ~E_NOTICE 表示错误级别为E_ALL 并且除了E_NOTICE
- 4. php开启短标签 http://ask.apelearn.com/question/120
控制参数: short_open_tag = On
如果设置为Off,则不能正常解析类似于这样形式的php文件:
phpinfo()
?>
而只能解析
phpinfo()
?>
这样形式的php文件
所以要想php支持短标签,需要我们把short_open_tag 设置为On.
- 5. php.ini详解 http://legolas.blog.51cto.com/2682485/493917
linux php安装xsl扩展,11.32 php扩展模块安装相关推荐
- 11.32 php扩展模块装安
2019独角兽企业重金招聘Python工程师标准>>> 11.32 php扩展模块安装 /usr/local/php7/bin/php -m //查看模块 下面安装一个redis的模 ...
- python spider 安装_Python爬虫(11):Scrapy框架的安装和基本使用
大家好,本篇文章我们来看一下强大的Python爬虫框架Scrapy.Scrapy是一个使用简单,功能强大的异步爬虫框架,我们先来看看他的安装. Scrapy的安装 Scrapy的安装是很麻烦的,对于一 ...
- linux下的opencv-4.5.5 及 opencv_contrib 扩展模块安装
适用于ubuntu(20.04)下安装opencv-4.5.5 以及opencv_contrib 扩展模块一并安装,如果已经安装了opencv-4.5.5,需要安装扩展模块的话,跳过第3步opencv ...
- zabbix源码安装3.4.11客户端和yum安装4.2.1客户端
安装Zabbix3.4.11客户端 系统: CentOS6.5 客户端ip:192.168.10.234 1.添加用户群组 groupadd -g 201 zabbix useradd -g zabb ...
- linux 32位redis安装,CentOS 5.5 32位上安装Redis 2.6报错解决
之前在FreeBSD7.4上安装很顺利就安装了,但这次在CentOS 5.5上安装时遇到了如下问题 zmalloc.o: In function zmalloc_used_memory': /home ...
- 怎么用php写软件老吴p,11.32 php扩展模块装安
php动态扩展模块添加 因为业务需要或者编译php的时候少安装了一个模块,我们现在需要新添加一个模块,那怎么做呢? 查看模块 /usr/local/php/bin/php -m 第一步:去php的安装 ...
- php gd扩展库,linux/windows安装php-gd扩展库
linux系统篇 1.CentOS系统 关于GD扩展 gd扩展是一个开源的图像处理库,它通过提供一系列用来处理图片的API,使其可以用来创建图表.图形.缩略图以及其他图像的处理操作.gd扩展支持JPG ...
- php7.1解压包安装,【Swoole】php7.1安装swoole扩展
参照:https://zixuephp.net/article-430.html 1.源码编译安装,PHP版本7.1.33 2.在已经编译好安装的php7.1中安装swoole扩展. 一.下载swoo ...
- php7 mcrypt模块_如何在php7.2/php7.3中安装mcrypt扩展?
mcrypt 是php里面重要的加密支持扩展库,linux环境下该库在默认情况下不开启.window环境下,PHP>=5.3,默认开启mcrypt扩展.mcrypt扩展是mcrypt加密库的接口 ...
最新文章
- 微软为什么要公开AI系统测试数据集和度量指标?
- 动态生成能够局部刷新的验证码【AJAX技术】---看了不懂赔你钱
- 收藏吧!产品再要求实现这个功能,就把这篇转给他!
- 撰写实施方案注意事项
- Visual C++ 编译器选项 /MD、/ML、/MT、/LD
- 小鹏汽车回应“非法收集人脸数据被罚10万”:误购第三方设备 数据已删除
- vm虚拟机联网最简单的方式
- 设计师必备|年年都能借鉴的新年Banner设计
- SQL注入之错误注入_基于updatexml()
- xml字符串转xml对象,xml对象转json对象
- 使用DBATools编写SQL Server对象脚本
- 龙腾世纪:起源(推荐一个可以用来英语学习的RPG游戏)
- linux命令--vi,vim
- 苹果发信用卡——大数据解读硅谷巨头如何发力金融科技
- 安装并启动Tomcat 8(mac版本)
- Linux socks5转http
- UE4 创建开始游戏界面UI
- 巴比特独家 | 区块链入选新基建,这几件事你不得不知
- 多股电线与单股电线怎么选
- 新月,上弦月,满月,下弦月的区别