Pyh.conf’25: a new PHP conference for the Russian-speaking community

Compilación de extensiones PECL compartidas con phpize

A veces, usar el instalador pecl no es una opción. Esto podría deberse a que hay un firewall o porque la extensión que se está instalando no está disponible como un paquete compatible con PECL, como extensiones no lanzadas desde git. Si tal extensión necesita ser construida, se pueden usar las herramientas de construcción de bajo nivel para realizar la construcción manualmente.

El comando phpize se usa para preparar el entorno de construcción para una extensión PHP. En el siguiente ejemplo, los fuentes para una extensión están en un directorio llamado extname:

$ cd extname
$ phpize
$ ./configure
$ make
# make install

Una instalación exitosa habrá creado extname.so y lo habrá puesto en el directorio de extensiones PHP extensions directory. El archivo php.ini necesitará ser ajustado, y una línea extension=extname.so necesitará ser añadida antes de que la extensión pueda ser usada.

Si el sistema carece del comando phpize, y se usan paquetes precompilados (como RPMs), asegúrese de instalar también la versión de desarrollo adecuada del paquete PHP ya que a menudo incluyen el comando phpize junto con los archivos de cabecera adecuados para construir PHP y sus extensiones.

Ejecute phpize --help para mostrar información adicional de uso.

add a note

User Contributed Notes 2 notes

up
71
Brian
17 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
up
7
admin at eexit dot net
13 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
To Top