?

Log in

No account? Create an account
Previous Entry Share Flag
Установка модуля php5-readline в Debian 7 (wheezy)
coderua
Функции модуля readline представляют удобную работу с командной строкой из php-скриптов.

Установка данного модуля в Debian Linux имеет некоторые «хитрости».
И просто установить его командой apt-get install php5-readline не получится.

Итак, исходная система:
$ lsb_release -a

No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.3 (wheezy)
Release: 7.3
Codename: wheezy


Процесс установки.

  1. Установим php и, необходимые для успешной установки readline, модули:
    sudo apt-get install php5-dev php5-cli libedit-dev libreadline6-dev
    В данном случае я указываю только обязательные пакеты, не акцентируя внимания на других php-модулях.

  2. Далее, необходимо загрузить исходники php, чтобы скомпилировать модуль:
    cd /tmp && apt-get source php5-cli

    В результате будет выведена строка на подобии следующей:
    dpkg-source: инфо: извлечение php5 в php5-5.4.4

  3. Переходим в директорию с нужным расширением php:
    cd php5-5.4.4/ext/readline

  4. Компилируем его:
    sudo -s
    phpize && ./configure && make

    • Если компиляция прервется следующей ошибкой:
      /tmp/php5-5.4.4/ext/readline/readline_cli.c:64:26: fatal error: sapi/cli/cli.h: No such file or directory
      compilation terminated.
      make: *** [readline_cli.lo] Ошибка 1


      следует создать символическую ссылку:
      ln -s ../../sapi/

      и повторить комманду:
      phpize && ./configure && make


  5. После успешной компиляции будет выведено приблизительно следующее сообщение:
    Libraries have been installed in:
    /tmp/php5-5.4.4/ext/readline/modules

    If you ever happen to want to link against installed libraries
    in a given directory, LIBDIR, you must either use libtool, and
    specify the full pathname of the library, or use the `-LLIBDIR'
    flag during linking and do at least one of the following:
    - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
    during execution
    - add LIBDIR to the `LD_RUN_PATH' environment variable
    during linking
    - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
    - have your system administrator add LIBDIR to `/etc/ld.so.conf'

    See any operating system documentation about shared libraries for
    more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------

    Build complete.
    Don't forget to run 'make test'.

  6. Можно устанавливать модуль:
    make install

    Результатом успешной установки будет строка вида:
    Installing shared extensions: /usr/lib/php5/20100525+lfs/

  7. Подключаем модуль к php:
    cat > /etc/php5/mods-available/readline.ini << EOF
    ; configuration for php Readline module
    ; priority=20
    extension=readline.so
    EOF

  8. Включаем модуль:
    php5enmod readline

  9. Проверяем успешность загруженности модуля в php:
    php -m | grep readline
    Результатом будет строка:
    readline


Поздравляю, установка модуля php5-readline в Debian GNU/Linux 7 (wheezy) успешно завершена!