用 phpize 编译共享 PECL 扩展库
有时候不能用 pecl 安装命令。这可能是因为存在防火墙,或者要安装的扩展不可用作 PECL 兼容的包,例如 Git 中尚未发布的扩展库。如果要编译这种扩展,可以用更底层的编译工具来手工进行编译。
phpize 命令是用来准备 PHP 扩展库的编译环境的。下面例子中,扩展库的源程序位于 extname 目录中:
$ cd extname $ phpize $ ./configure $ make # make install
成功的安装将创建 extname.so 并放置于
PHP 的扩展库目录中。需要调整
php.ini,加入 extension=extname.so
这一行之后才能使用此扩展库。
如果系统中没有 phpize 命令并且使用了预编译的包(例如 RPM),那要安装 PHP 包相应的开发版本,此版本通常包含了 phpize 命令以及用于编译 PHP 及其扩展库的正确头文件。
使用 phpize --help 命令可以显示此命令用法。
+添加备注
用户贡献的备注 2 notes
Brian ¶
16 years ago
If you have multiple PHP versions installed, you may be able to specify for which installation you'd like to build by using the --with-php-config option during configuration.
--with-php-config=[Insert path to proper php-config here]
For example (my case):
./configure --with-php-config=/usr/local/php5/bin/php-config5
admin at eexit dot net ¶
12 years ago
When compiling an extension for a stack which is 64 bits (for example) and your compiler is configured to compile in 32 bits, you can manually compile your extensions using C flags before your configure.
Example: my system compiler is 32 bits and my stack is 64 bits. To compile my xdebug:
# phpize
# CFLAGS=-m64 CPPFLAGS=-m64 CCASFLAGS=-m64 ./configure --enable-xdebug
# gmake
# file modules/xdebug.so
modules/xdebug.so: ELF 64-bit LSB dynamic lib AMD64 Version 1, dynamically linked, not stripped, no debugging information available