显示标签为“phpize”的博文。显示所有博文
显示标签为“phpize”的博文。显示所有博文

2016年5月11日星期三

Linux 用 phpize 快速扩展php模块


一,phpize的好处


什么时候我们要用phpize呢?我们在安装php时:

# ./configure --prefix=/usr/local/php  --enable-fpm --enable-fastcgi --enable-ftp --with-mcrypt --enable-mbstring --with-curl --with-iconv --with-gettext --enable-inline-optimization --with-bz2  --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql=/usr/local/mysql --with-mysqli --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-openssl --enable-xml --disable-rpath --with-freetype-dir=/usr

后面根的参数是我们要的模块,但是随着工作的需要,我们还要在加些模块,又不想重新编译php,这些我们就可以用phpize了。



二,安装php模块


下面我以mcrypt安装为例子

# cd /root/php-5.2.6/ext/mcrypt #ext目录下面放的是php的模块库

# /usr/local/php/bin/phpize


#确定 php-config 文件在不在,调用php-config,安装后 .so 文件会自动放到 extension_dir 里面

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


# 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'.


# make install

Installing shared extensions: /usr/lib64/php/modules/


三,查看.so文件,以及修改 php.ini


ls -l /usr/lib64/php/modules/


# vi /usr/local/php/lib/php.ini

extension = "mcrypt.so"


四,重起apache或者phpcgi或者其他



CentOS 用 phpize 安装 PHP 扩展出现 Can't find PHP headers in /usr/include/php 原因

因为要在 CentOS 用 PHP 操作 Oracle 数据库,要安装新的 PHP 扩展 oci8 。

关于安装 PHP 扩展,以前总以为要重新编译 PHP,今天查阅大量资料发现原来可以像apache模块一样动态扩展。今天就以 oci8 举例。

一、进入要安装的扩展的源码目录(没有就到官方下载源代码)

# cd /root/php-5.5.35/ext/oci8

运行 phpize ,如果不知道 phpize 在哪个目录,可以运行 # which phpize  命令





# /usr/bin/phpize   # 这一步可能会出现以下错误



按照字面的意思,可能是你没安装 php-devel 这个扩展包。phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,phpize 是属于php-devel的内容,所以只要运行yum install php-devel 就行

# yum install php-devel   # 却出现以下提示



这说明仓库里默认的 phpize 和 PHP 版本不一致。从下面的命令可以看出:php-devel 版本是 5.3.3 。这就需要我们重新安装 phpize 。







安装与当前 PHP 版本一致的 php-devel 。PHP 版本可以通过 php -v 查看。



所以安装与当前系统 PHP 对应的 php-devel 就可以了。运行 yum install php55w-devel 出现以下信息,安装成功。


二、运行 /usr/bin/phpize 出现以下信息,说明可以了。




# ./configure --with-php-config=/usr/bin/php-config
# make 

# make install

安装完后会有这样的东西,Installing shared extensions: /usr/lib64/php/modules 。说明系统已经默认把 oci8.so 模块安装在 /usr/lib64/php/modules 目录中了。



三,修改php.ini

# vi /etc/php.ini


由于我的 CentOS 里 PHP 是以这种方式扩展模块。所以只需在 /etc/php.d 里面添加相应的文件就可以了。


关于PHP扩展,可以通过 phpinfo(); 来查看。



四、重启 Apache