Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Помощь интерактивной консоли PHP под Debian Linux

Anna | 31.05.2014 | нет комментариев

Наверное, многие сталкивались с вопросом неработающей интерактивной консоли PHP.

Когда вводишь

# php -a

и видишь только надпись «Interactive mode enabled», позже которой что ни вводи, истолковывание и исполнение введённых команд не работает. На самом деле это не вовсе так. На самом деле это особый режим, которым нужно ещё уметь пользоваться. Изложение работы данного режима не входит в задачи моего поста. Для обыкновенного же непосвящённого пользователя он выглядит именно так: ничего не работает. А вот тем, Дабы «работало» так, как мы привыкли в консолях python либо node.js, мы и займёмся.


Позже некоторого гугления множество ссылок выдают совет перекомпилировать PHP с помощью библиотеки readline. Именно она, мол, отвечает за работу PHP в интерактивном режиме. Да, именно так: в вашей сборке PHP не работает readline. Боле того, в Debian Linux вы никак не сумеете установить эту поддержку «из коробки» из-за задач лицензионного нрава дистрибьютора. Пакета php5-readline в нём легко нет. Тем не менее, есть больше примитивный и «легальный» метод принудить PHP-шную консоль трудиться, нежели пересборка каждого PHP и его «ручная» установка, позже которой ваш PHP выпадает из стандартного механизма обновлений операционной системы, а в случае дальнейшей случайной установки PHP из пакета чреват раздорами.

Сразу оговорюсь, что всё сказанное относится к нынешней стабильной версии Debian Wheezy. В дальнейшей, нестабильной версии Debian, эту поддержку как бы как вернули. К сожалению, сам я это не проверял, но видел пакет php5-readline в соответствующем репозитории и видел завершения fixed в соответствующих топиках баг-репортов. То есть, насколько я осознал, в Debian Jessie и PHP 5.5 эта помощь будет «из коробки».

Вернёмся к Wheezy и PHP 5.4…
Написанное с некоторыми небольшими модификациями абсолютно применимо и к иным дистрибутивам Linux, правило тот же.

Делаем всё из под рута либо предваряем командой sudo.

1. Раньше каждого нам потребуются пакеты dev для PHP и readline

# aptitude install php5-dev libedit-dev libreadline-dev

Пакеты php, libedit, libreadline если не были установлены до этого, установятся механически.

2. Дальше нам потребуются исходники PHP. Берём их из репозитория ОС

# apt-get source php5-cli

3. Пересобирать каждый PHP мы не будем. нам необходим каждого лишь один модуль. Его и соберём

# cd php5-5.4.4/ext/readline/
# phpize
# ./configure
# make

4. Тут нас ждет подводный камень: при компиляции компилятор не найдёт sapi.h

# ln -s ../../sapi/
# make

5. Сборка удачно завершилась. Берём новоиспечённый модуль readline.so, кладём его к модулям действующего PHP и правим конфиги

Модуль:

# locate mcrypt.so | grep php
# cp modules/readline.so /usr/lib/php5/20100525 lfs/
# chmod -x /usr/lib/php5/20100525 lfs/readline.so

Тут команда locate применяется для определения пути, где лежат PHP-шные либы на примере mcrypt, тот, что устанавливается автоматом при установке PHP. Если у вас нет команды locate, определите ваш путь по аналогии с моим

Конфиг:

# echo ‘extension=readline.so’ >/etc/php5/mods-available/readline.ini
# cd /etc/php5/cli/conf.d
# ln -s ../mods-available/readline.ini 20-readline.ini

Всё. Консоль работает.

# php -a
Interactive mode enabled

php >

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB