- 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扩展模块安装相关推荐

  1. 11.32 php扩展模块装安

    2019独角兽企业重金招聘Python工程师标准>>> 11.32 php扩展模块安装 /usr/local/php7/bin/php -m //查看模块 下面安装一个redis的模 ...

  2. python spider 安装_Python爬虫(11):Scrapy框架的安装和基本使用

    大家好,本篇文章我们来看一下强大的Python爬虫框架Scrapy.Scrapy是一个使用简单,功能强大的异步爬虫框架,我们先来看看他的安装. Scrapy的安装 Scrapy的安装是很麻烦的,对于一 ...

  3. linux下的opencv-4.5.5 及 opencv_contrib 扩展模块安装

    适用于ubuntu(20.04)下安装opencv-4.5.5 以及opencv_contrib 扩展模块一并安装,如果已经安装了opencv-4.5.5,需要安装扩展模块的话,跳过第3步opencv ...

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

  5. linux 32位redis安装,CentOS 5.5 32位上安装Redis 2.6报错解决

    之前在FreeBSD7.4上安装很顺利就安装了,但这次在CentOS 5.5上安装时遇到了如下问题 zmalloc.o: In function zmalloc_used_memory': /home ...

  6. 怎么用php写软件老吴p,11.32 php扩展模块装安

    php动态扩展模块添加 因为业务需要或者编译php的时候少安装了一个模块,我们现在需要新添加一个模块,那怎么做呢? 查看模块 /usr/local/php/bin/php -m 第一步:去php的安装 ...

  7. php gd扩展库,linux/windows安装php-gd扩展库

    linux系统篇 1.CentOS系统 关于GD扩展 gd扩展是一个开源的图像处理库,它通过提供一系列用来处理图片的API,使其可以用来创建图表.图形.缩略图以及其他图像的处理操作.gd扩展支持JPG ...

  8. php7.1解压包安装,【Swoole】php7.1安装swoole扩展

    参照:https://zixuephp.net/article-430.html 1.源码编译安装,PHP版本7.1.33 2.在已经编译好安装的php7.1中安装swoole扩展. 一.下载swoo ...

  9. php7 mcrypt模块_如何在php7.2/php7.3中安装mcrypt扩展?

    mcrypt 是php里面重要的加密支持扩展库,linux环境下该库在默认情况下不开启.window环境下,PHP>=5.3,默认开启mcrypt扩展.mcrypt扩展是mcrypt加密库的接口 ...

最新文章

  1. 微软为什么要公开AI系统测试数据集和度量指标?
  2. 动态生成能够局部刷新的验证码【AJAX技术】---看了不懂赔你钱
  3. 收藏吧!产品再要求实现这个功能,就把这篇转给他!
  4. 撰写实施方案注意事项
  5. Visual C++ 编译器选项 /MD、/ML、/MT、/LD
  6. 小鹏汽车回应“非法收集人脸数据被罚10万”:误购第三方设备 数据已删除
  7. vm虚拟机联网最简单的方式
  8. 设计师必备|年年都能借鉴的新年Banner设计
  9. SQL注入之错误注入_基于updatexml()
  10. xml字符串转xml对象,xml对象转json对象
  11. 使用DBATools编写SQL Server对象脚本
  12. 龙腾世纪:起源(推荐一个可以用来英语学习的RPG游戏)
  13. linux命令--vi,vim
  14. 苹果发信用卡——大数据解读硅谷巨头如何发力金融科技
  15. 安装并启动Tomcat 8(mac版本)
  16. Linux socks5转http
  17. UE4 创建开始游戏界面UI
  18. 巴比特独家 | 区块链入选新基建,这几件事你不得不知
  19. 多股电线与单股电线怎么选
  20. 新月,上弦月,满月,下弦月的区别

热门文章

  1. 程序员的自我吐槽,来自专业人士的扎心吐槽!
  2. IPSec 密钥加密体系概述
  3. python去除字符串中表情字符
  4. WIFI芯片调试APP Wif网络精灵
  5. javascript中caller与callee的作用以及用法
  6. 给SSD(固态硬盘)编程
  7. PPM,PGM图片格式
  8. Selenium.Chrome.ChromeDriver指纹去除
  9. 电脑编程从哪里开始学习_我想学习编程,但我不知道从哪里开始
  10. 通达信程序化交易接口使用步骤