PHPerKaigi 2024

Компиляция модулей PECL статически в PHP

Возможно, потребуется собрать модуль PECL статично в бинарный файл PHP. Для этого необходимо поместить код модуля в директорию /path/to/php/src/dir/ext/ и вызвать перегенерацию конфигурационных скриптов через систему сборки PHP.

$ cd /path/to/php/src/dir/ext
$ pecl download extname
$ gzip -d < extname.tgz | tar -xvf -
$ mv extname-x.x.x extname

В результате будет создана следующая директория:


/path/to/php/src/dir/ext/extname

После этого PHP необходимо заново пересобрать конфигурационный скрипт, после чего он может быть собран как обычно:


$ cd /path/to/php/src/dir
$ rm configure
$ ./buildconf --force
$ ./configure --help
$ ./configure --with-extname --enable-someotherext --with-foobar
$ make
$ make install

Замечание: Для запуска скрипта buildconf понадобится команда autoconf версии 2.68 и команда automake версии 1.4+ (более новые версии скрипта autoconf могут работать, но не поддерживается).

В зависимости от модуля будет использован один из двух параметров — --enable-extname или --with-extname. Обычно модуль, который не требует внешних библиотек, использует параметр --enable. Чтобы убедиться в этом, можно выполнить команду buildconf:


$ ./configure --help | grep extname

add a note

User Contributed Notes 1 note

up
6
anthon at piwik dot org
11 years ago
Some extensions cannot be statically linked (e.g., xdebug).
To Top