当已经安装编译了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/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  首次会报错说少了autoconf这个包

$PHP_AUTOCONF environment variable. Then, rerun this script.

# yum install -y autoconf

# /usr/local/php7/bin/phpize  此时就可以ls看到有configure这个文件了

# ./configure --with-php-config=/usr/local/php7/bin/php-config

一般情况下只需要加这个选项就可以了。

# make

# make install   //会把redis.so的文件放到这个20160303目录下

Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-zts-20160303/

此时redis模块还没有加载,需要配置一下:

# /usr/local/php7/bin/php -i |grep extension_dir  //查看扩展模块存放目录,可在php.ini中自定义该路径。

# vim /usr/local/php7/etc/php.ini  //增加一行配置,可放在最后一行

extension=redis.so

# /usr/local/php7/bin/php -m |grep redis  //已经加载好了

redis

通常扩展模块会放到这个目录下/usr/local/php7/lib/php/extensions/


# cd /usr/local/src/php-7.1.6/ext

当你想编译一个扩展模块时,如果它自带的源码包里的ext目录下有这个模块的目录,那你就可以直接进这个模块的目录下去编译它。

进入目录,

然后/usr/local/php7/bin/phpize

再加一条# ./configure --with-php-config=/usr/local/php7/bin/php-config

再# make && make install

然后进/usr/local/php7/etc/php.ini增加一行extension=zip.so的配置就可以加载出来了。


扩展

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