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