Mac OS PHP интраактивный режим не имеет подсказки

Я пытаюсь запустить PHP в интерактивном режиме из окна терминала и когда я запускаю команду

  php -a

он говорит "Интерактивный режим включен", но не показывает подсказку "php->", которая должна. Мне нужно нажать control z, чтобы выйти из интерактивного режима, но я могу выполнять любые команды, когда интерактивный режим "включен"

Кто-нибудь знает, как это исправить

3 ответа

Решение

Интерактивная оболочка PHP требует, чтобы GNU readline или libedit статически компилировались в двоичный файл PHP. Многие дистрибутивы предоставляют только общие библиотеки, содержащие только расширение readline.

Если вы сами компилируете PHP, сделайте

./configure --with-readline

или же

./configure --with-libedit

(обратите внимание, что вы, возможно, не можете распространять двоичные файлы PHP, связанные с readline, из-за несовместимости между GPl и лицензией PHP, тогда вам придется использовать libedit, но я сомневаюсь, что вы все равно хотите распространять сам PHP. Использование, конечно, нормально. Это не имеет значения для ваших PHP-приложений, но это одна из причин, почему это не работает для большинства дистрибутивов...)

Изменить: Я только что подал ошибку PHP, чтобы включить режим readline с общей сборки, может быть, я найду время для его реализации: http://bugs.php.net/bug.php?id=53878

Есть решение (эмулятор), которое работает довольно хорошо для меня:

http://www.fischerlaender.net/php/phpa-norl

Есть еще одно отличное решение (созданное Facebook, кстати) phpsh

Своими словами:

phpsh - это интерактивная оболочка для php, которая имеет историю чтения строк, завершение вкладок, быстрый доступ к документации. Он был разработан на Facebook и по иронии судьбы, написан в основном на Python. Это открытый исходный код и выпущен под модифицированной лицензией BSD.

Я использую это некоторое время, и это действительно хорошо, во многих отношениях даже лучше, чем просто php -a

Другие вопросы по тегам