Compilation des extensions partagées avec phpize

Parfois, l'utilisation de l'installeur pecl n'est pas une option. Cela peut ĂȘtre dĂ» Ă  la prĂ©sence d'un pare-feu ou au fait que l'extension en cours d'installation n'est pas disponible en tant que paquet PECL compatible, comme les extensions non publiĂ©es provenant de git. Si une telle extension doit ĂȘtre construite, les outils de construction de niveau infĂ©rieur peuvent ĂȘtre utilisĂ©s pour effectuer la construction manuellement.

La commande phpize est utilisée pour préparer l'environnement de compilation pour une extension PHP. Dans l'exemple suivant, les sources de l'extension sont dans un dossier appelé extname :

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

Une installation rĂ©ussie crĂ©era un fichier extname.so et le placera dans le dossier des extensions de PHP. Le php.ini devra ĂȘtre ajustĂ©, et la ligne extension=extname.so ajoutĂ©e avant de pouvoir utiliser l'extension.

Si le systĂšme ne possĂšde pas la commande phpize et que des paquets prĂ©compilĂ©s (comme des RPM) sont utilisĂ©s, il faut s'assurer d'installer Ă©galement la version de dĂ©veloppement appropriĂ©e des paquets PHP car elle inclut Ă©galement la commande phpize ainsi que les en-tĂȘtes appropriĂ©s pour construire PHP et ses extensions.

Exécuter la commande phpize --help pour afficher des informations d'utilisation supplémentaires.

add a note

User Contributed Notes 2 notes

up
72
Brian ¶
18 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
8
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