Компиляция разделяемых расширений с помощью phpize
Иногда использование инсталятора pecl не подходит. Это может быть связано с тем, что вы находитесь за файерволом или из-за того, что расширение, которое вы хотите установить, недоступно в PECL-совместимом пакете (к примеру, расширения из SVN, у которых еще нет релизов). Если вам необходимо собрать такое расширение, вы можете использовать низкоуровневые утилиты для выполнения сборки вручную.
Команда phpize используется для подготовки окружения PHP-расширения. В следующем примере директория, где находятся исходные коды расширения, называется extname:
$ cd extname $ phpize $ ./configure $ make # make install
В случае успешной установки будет создан файл extname.so и помещен в PHP директорию расширений. Вам будет необходимо добавить строку extension=extname.so в php.ini перед использованием этого расширения.
Если в системе нет phpize, но существует возможность установки заранее скомпилированных пакетов (типа RPM), убедитесь, что установлена соответствующая версия пакета PHP для разработчиков, так как они часто содержат команду phpize с подходящими файлами заголовков для сборки PHP и его расширений.
Для дополнительной информации используйте команду phpize --help.
Коментарии
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
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