PHP Conference Kansai 2025

Compilación de extensiones compartidas con phpize

A veces, el uso del instalador pecl no es una opción. Esto puede deberse a la presencia de un cortafuegos o al hecho de que la extensión en curso de instalación no está disponible como un paquete PECL compatible, como las extensiones no publicadas provenientes de git. Si se debe construir una extensión de este tipo, las herramientas de construcción de nivel inferior pueden ser utilizadas para realizar la construcción manualmente.

El comando phpize se utiliza para preparar el entorno de compilación para una extensión PHP. En el siguiente ejemplo, las fuentes de la extensión están en una carpeta llamada extname:

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

Una instalación exitosa creará un fichero extname.so y lo colocará en el directorio de extensiones de PHP. El php.ini deberá ser ajustado, y la línea extension=extname.so agregada antes de poder utilizar la extensión.

Si el sistema no posee el comando phpize y se utilizan paquetes precompilados (como RPM), es necesario asegurarse de instalar también la versión de desarrollo apropiada de los paquetes PHP ya que incluye también el comando phpize así como los encabezados apropiados para construir PHP y sus extensiones.

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

add a note

User Contributed Notes 2 notes

up
70
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
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
To Top