Kompilieren dynamischer PECL-Erweiterungen mit phpize
Manchmal ist es nicht möglich, das Installationsprogramm von
pecl zu verwenden. Dies könnte an einer Firewall liegen,
oder daran, dass die zu installierende Erweiterung nicht als
PECL-kompatibles Paket verfügbar ist, z. B. weil sie noch nicht auf Git
veröffentlicht wurde. Wenn eine solche Erweiterung erstellt werden muss,
kannen dies mit einfacheren Build-Tools manuell erledigt werden.
Mit dem Befehl phpize wird die Build-Umgebung für eine
PHP-Erweiterung vorbereitet. Im folgenden Beispiel befinden sich die
Quellen für eine Erweiterung in einem Verzeichnis namens
extname:
$ cd extname
$ phpize
$ ./configure
$ make
# make install
Wenn alles gutgeht, wird extname.so erstellt und im
Verzeichnis für PHP-Erweiterungen
abgelegt. Bevor die Erweiterung verwendet werden kann, muss die Zeile
extension=extname.so
in die php.ini eingefügt werden.
Wenn es den Befehl phpize
auf dem System nicht gibt und
vorkompilierte Pakete (z. B. RPMs) verwendet werden, sollten unbedingt auch
die entsprechende Entwicklerversion des PHP-Pakets installiert werden, da
dieses oft den Befehl phpize
sowie die entsprechenden
Header zum Erstellen von PHP und seinen Erweiterungen enthält.
Mit dem Befehl phpize --help können zusätzliche
Informationen zur Verwendung angezeigt werden.
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
dmytton at php dot net ¶18 years ago
In some situations (e.g. on a cPanel server), the built extension will not be placed into the correct extensions directory by the make install process. Use your phpinfo() output to determine what the correct extension_dir path is and move the generated .so file into that directory. The extension=extname.so line in php.ini will then find the extension file correctly.