Когда я устанавливаю php5-cli в Debian Wheezy (в данный момент тестирую), интерактивная подсказка становится очень непригодной из-за отсутствия поддержки readline (ошибка 341868 ). Какой самый простой способ установить версию, связанную с libreadline (для удобного редактирования строк)?
command-line
debian
php
readline
Мэтью Флэшен
источник
источник
php>
для меня :(После установки php5- cli из dotdeb установите пакет php5-readline.
источник
php5-readline
доступен в основном архиве Джесси и Сида. И вам не нуженphp5-cli
от dotdeb.В дополнение к ответу Жиля, который предлагает перекомпилировать полный пакет PHP, вы также можете подождать PHP 5.4. В 5.4 я реструктурировал функциональность readline, чтобы все требуемые части были в модуле readline, так что вы можете создать его отдельно.
Затем вы получите файл,
modules/readline.so
который можно загрузить из php.ini (make install
переместите его вextension_dir
)В качестве альтернативы, дистрибьютор может отправить модуль readline (возможно, связанный с libedit, а не readline), и будет доступен интерактивный режим.
Все это не поможет вам сейчас (поскольку PHP 5.4. Еще не выпущен), но может помочь другим найти этот вопрос позже.
Некоторые подробности в моем блоге: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html
Изменить: На самом деле сообщение в блоге старше, чем это изменение, но все еще может быть интересно. Немного информации содержится в отчете об ошибках # 53878, но не так много ... после выпуска http://php.net/commandline.interactive должно быть больше.
источник
Установить
rlwrap
и запуститьrlwrap php5
. Rlwrap - это стандартная оболочка readline, она предоставляет издание и историю командной строки для любого цикла read-eval-print. Так как это универсальная оболочка, вы не получите никакого специфичного для PHP завершения.Или же получите пакет с исходным кодом и пересоберите его с поддержкой readline. Поддержка Readline была исключена только из-за проблем с лицензированием , но эти проблемы только запрещают распространять PHP5, связанный с readline, но не запрещают вам его использовать.
источник
rlwrap
кажется, не очень помогает. Когда я бегуrlwrap php5
, введитеecho 1;
, затем нажмите Return, затем Ctrl-D (конец ввода), он выводит вводecho 1;
вместо результата (1). Спасибо, что отметили, что это проблема лицензирования.rlwrap php5
и простоphp5
, кроме прежнего разрешения для командной строки. Если вы вводите<?php echo 1;?>
, вывод есть1
, но он не генерируется сразу в любом случае. Googling предполагает, что этоphp5
просто не PHP REPL, и вы должны использовать что-то вроде phpsh .<?php
или?>
в интерактивную оболочку. Я согласен, что php не имеет полного REPL. Но, используя версию, скомпилированную с работающей поддержкой readline (например, с пакетом dotdeb, с которым я связан), он будет выводить 1 (или какой-то реальный вывод) сразу после нажатия клавиши enter Я согласен, что нет существенной разницы между rlwrap и readline вообще (кроме редактирования строк и истории, которые хороши, но не так полезны, как немедленный вывод).Попробуй это:
Печать Ctrl-d
источник
<?php ?>
блоков. Я не знал об этом, и это показывает, что я неправильно понял Жиля раньше.Для пользователей Ubuntu php5-readline - это дополнительный пакет, который необходимо установить, чтобы иметь доступную командную строку php:
Я должен был сделать это на моем Ubuntu 14.04.
источник
Ничто из этого не помогло мне. Вместо этого используйте http://www.phpsh.org/ .
источник
В Debian Jessie и в Debian sid используйте:
затем
источник