Одни люди ищут - причины, другие - возможности, выигрывают последние

Установка PECL PHP

Просматривая аналитику обнаружил, что ко мне стали часто обращаться по запросу "установка pecl php", как я понимаю, этому поспособствовала моя предыдущая статья про установку mnoGoSearch. Мне стало интересно, что же люди ищут по этой проблеме?

До конца не осознаю, что их приводит сюда, единственной причиной может служить то, что PECL раздел на официальном сайте PHP долгое время не был переведен на русский язык, может люди ищут русский перевод?

Что-ж, раздел интересный и перевод его занимает не так много времени, людям, которым по душе читать мануалы на русском языке посвящается:

Глава 5. Установка PECL расширений

Таблица содержимого

Введение в PECL установку

PECL это хранилище PHP расширений которое доступно Вам через систему PEAR. Этот раздел руководства предназначет для демонстрации того, как получить и проинсталлировать PECL расширения.

Эти инструкции предполагают, что "/your/phpsrcdir/" это путь к исходному дистрибутиву PHP и что "extname" это имя PECL расширения, поэтому приведите все рассматриваемые здесь примеры в соответствии с Вашими требованиями. Эти инструкции также полагают, что Вы уже знакомы с командой pear.

Для использования расширения оно должно быть собрано, проинсталлировано и загружено. Методы описанные ниже предоставляют Вам различные инструкции о том, как собрать и инсталлировать расширения, но они не загружают их автоматически. Расширения могут быть загружены после добавления директивы расширений в php.ini файле или через использование функции dl().

Когда собираются PHP модули, очень важно знать версии всех необходимых инструментов (autoconf, automake, libtool, и т.д.) Смотрите Анонимные CVS инструкции для детализации требуемых инструментов и требуемых версий.

Загрузка PECL расширений

Существует несколько вариантов для загрузки PECL расширений, такие как:
  • http://pecl.php.net

    Это веб сайт PECL содержащий информацию о различных расширениях, которые предлагаются командой разработчиков PHP. Информация доступная там содержит: лог изменений, замечания о релизе, требования и другие детали.

  • pecl download extname

    PECL расширение имеющее релизы и находящееся в списке PECL на веб сайте и доступное для скачивания и инсталляции с использованием команды pear. Вами может быть выбрана требуемая ревизия.

  • CVS

    Большинство PECL расширений размещено в CVS. Веб просмотр CVS может быть выполнен через http://cvs.php.net/pecl/. Для загрузки прямо из CVS должна быть использована следующая последовательность команд (заметьте, что phpfi это пароль для пользователя cvsread):

    # cvs -d:pserver:cvsread@cvs.php.net:/repository login
    # cvs -d:pserver:cvsread@cvs.php.net:/repository co pecl/extname
    
  • Скачивание для Windows

    Пользователи Windows могут найти уже скомпилированные PECL файлы выполнив закачку Collection of PECL modules со страницы PHP Downloads и выбрав PECL Snapshot. Для компиляции PHP под Windows, читайте соответствующий раздел.

PECL для Windows пользователей

Как и множество других PHP DLL расширений, инсталляция заключается в простом копировании DLL файла с PECL расширением в папку с расширениями "extension_dir" и их дальнейшей загрузкой в php.ini. Для примера, добавьте следующую строку в Ваш php.ini:

extension=php_extname.dll

После того, как все сделано, перезапустите веб сервер.

Компиляция совместных PECL расширений с PEAR

PEAR легко создает общедоступные PHP расширения. Используя команду pear, сделайте следующее:

# pecl install extname

Эта команда загрузит исходник extname, скомпилирует и инсталлирует extname.so в Вашу директорию с расширениями "extension_dir", затем extname.so может быть загружено через php.ini.

По умолчанию, команда pear не инсталлирует пакеты, которые помечены как альфа или бета релизы. Если нет доступного стабильного пакета, Вы можете инсталлировать бета пакет используя следующую команду:

# pecl install extname-beta

Вы также можете инсталлировать определенную версию расширения используя следующий вариант:

# pecl install extname-0.1

Компиляция совместных PECL расширений с phpize

Иногда использование PEAR инсталлятора невозможно. Такое может быть если Вы находитесь за файерволом или расширение, которое Вы хотите инсталлировать, недоступно Вам как PEAR совместимый пакет, таковыми могут быть неизданные расширения из CVS. Если Вам необходимо построить такое расширение, Вы можете использовать низко-уровневую сборку, выполнив построение вручную.

Команда 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 для показа дополнительной информации об использовании этой команды.

Компиляция статических PECL расширений PHP

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

# cd /your/phpsrcdir/ext
# pear download extname
# gzip -d < extname.tgz | tar -xvf -
# mv extname-x.x.x extname

Это создаст следующую директорию:

/your/phpsrcdir/ext/extname
Далее дайте PHP команду перестроить конфигурационный скрипт и затем соберите PHP как обычно:
# cd /your/phpsrcdir
# rm configure
# ./buildconf --force
# ./configure --help
# ./configure --with-extname --enable-someotherext --with-foobar
# make
# make install

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

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

# ./configure --help | grep extname
4 комментария на статью:
  • Dexel:

    Скажите, а чем можно заменить команду phpize?

    Потому как у меня её использование выдаёт ошибку:
    sudo phpize
    Configuring for:
    PHP Api Version: 20041225
    Zend Module Api No: 20060613
    Zend Extension Api No: 220060519
    cp: невозможно выполнить stat для «libtool.m4»: Нет такого файла или каталога
    cp: невозможно выполнить stat для «ltmain.sh»: Нет такого файла или каталога
    cat: ./build/libtool.m4: Нет такого файла или каталога
    configure.in:3: warning: prefer named diversions
    configure.in:8: warning: LT_AC_PROG_SED is m4_require’d but not m4_defun’d
    aclocal.m4:2619: PHP_CONFIG_NICE is expanded from…
    configure.in:8: the top level
    configure.in:74: error: possibly undefined macro: AC_PROG_LIBTOOL
    If this token and others are legitimate, please use m4_pattern_allow.
    See the Autoconf documentation.
    configure:2560: error: possibly undefined macro: LT_AC_PROG_SED

    На более низком уровне чем заменить phpize?

  • neo:

    У меня вчера тоже такое выдавало. Седня набрел на этот сайт и просто набрал:
    pecl install dbase

    Он все сам скомпилировал и поставил.
    Спасибо за статью.

  • Дмитрий:

    Вы знаете, дорогой автор, есть люди, и притом нормальные, образованные, знающие английский язык, но по какой-то причине услышавшие слово PECL первый раз в жизни.

    Вот моделирую ситуацию. Надо мне быстро сделать приложение, которое бы работало с существующей базой SQLite3. Я не знаю, что такое SQLite3 и чем оно отличается от других. Иду в википедию и читаю.

    Там написано, что куча языков работает с этой библиотекой. В частности PHP. Идем в PHP. Читаем доку в оригинале (чтобы вам было приятно, уточню, что в оригинале)

    Since PHP 5.0 this extension was bundled with PHP. Beginning with PHP 5.4, this extension is available only via PECL.

    Ну я не всегда сразу переключаюсь на последние PHP. Но в перспективе переключусь. А что же за хрень этот Пекл? (Причем Пекл — знакомо как-то звучит и вполне возможно, что я года 3 назад, уже озадачивался тем же вопросом, но забыл за ненадобностью)

    Иду Википедию и читаю по русски :(, что это сборник библиотек для PHP, созданный для того, чтобы было куда складывать библиотеки вышедшие из стандартной сборки PHP.

    Тогда у меня возникает логичный вопрос. А может быть кто-то сделал скрипт для того, чтобы сразу скачать и сразу установить и сразу php.ini изменить? Я ввожу запрос и о чудо! Нахожу ваш блог. Читаю. При этом совершенно не напрягаюсь, ибо на родном языке написано. Спасибо, автор, за то, что сделали перевод. Ура! Мир-дружба-жвачка!

    Любопытство я свое удовлетворил и скорее всего забуду эту инфу где-то через год-полтора.

    Надеюсь после этого объемного поста вам стало яснее, кто ищет установку Пекл и находит вас?

    Дмитрий.

Ответить
Обязательные поля помечены *