Невозможно использовать интерпретатор командной строки

Я попытался выполнить простой PHP-код в PHP-интерпретаторе. Когда я выполнил команду php -a я получаю сообщение

Интерактивный режим включен

Без места для ввода php. Но я могу выполнить php-код через команду php -r . например:

php -r "echo 'Hello stackoverflow!';"

Привет, stackoverflow!

Related of "Невозможно использовать интерпретатор командной строки"

Установите это:

 php5-readline 

затем попробуйте использовать:

 php -a 

введите php -m и убедитесь, что у вас есть модуль readline. Если вы этого не сделаете, вы не сможете его использовать.

http://www.php.net/manual/en/features.commandline.interactive.php

Начиная с PHP 5.1.0, CLI SAPI предоставляет интерактивную оболочку, используя параметр -a, если PHP скомпилирован с опцией –with-readline .

Кажется, что существует ошибка компиляции / связи между вашим PHP и libreadline. Это описано в PHP Bug # 48759 .

  • Вы сами скомпилировали PHP? Вы играли с –configure и не делали правильный make clean перед окончательной сборкой?
  • php -m ли функция php -m readline как включенную функцию? (PHP построен с опцией --with-readline )
  • Какая у вас версия php?
  • Какое распределение вы используете?
  • У вас установлена ​​libreadline (пакет * -dev)?

После того, как я устал компилировать его на каждой машине, я использовал PHPSH (как упоминалось joey-adams)

Это намного лучше, чем php -a (подсветка синтаксиса и автозаполнение)

Установить python phpsh

посмотрите на install-php5-with-readline-support-on-debian-wheezy

 $ sudo apt-get install python # this is necessary to run phpsh $ cd ~/ $ wget https://github.com/facebook/phpsh/zipball/master $ unzip phpsh-master.zip $ cd phpsh-master $ sudo cp -r src /etc/phpsh # phpsh seems to complain unless it resides at /etc/phpsh $ sudo ln -s /etc/phpsh/phpsh /usr/bin/phpsh # put phpsh on the $PATH 

Вы находитесь в интерактивном режиме, но без подсказки, так как у вас может не быть доступного режима чтения. Вам просто нужно начать вводить текст, и ваши команды будут оцениваться после нажатия клавиши ввода. Это не похоже на то, что происходит, но если вы входите, например:

 <?php echo "hello world"; ?> 

… вы получите результат …

Если вы введете блокированные блоки, они будут оценены после нажатия кнопки ввода после закрытия }

 <?php for ($i = 0; $i < 5; $i++) { echo $i; } // prints 12345 after closing } 

Обратите внимание, что вы должны начинать с <?php или что-либо введенное не будет оцениваться.

Обновление (годы спустя):

В системе Red Hat (RHEL5), на которой запущена исправленная версия PHP 5.3.3, я столкнулся с интерактивным режимом, который не возвращался назад после закрытия брекетов.

Вместо этого выходной буфер не был сброшен, пока не нажмете Ctrl d . Эффективно это делает интерактивный сеанс одноразовым. Вставьте весь ввод кода и Ctrl d, чтобы сразу вернуть весь вывод.

Чтобы проверить, установлен ли модуль readline, введите: php -m | grep readline php -m | grep readline

Если ничего не отображается, установите модуль readline: sudo apt-get install php5-readline

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

Если вы используете Mac, тогда установите Homebrew ( http://brew.sh ), а затем введите: brew install phpsh

И затем вы можете запустить phpsh, чтобы получить интерактивную оболочку.

Поскольку модуль readline не установлен. http://php.net/manual/en/features.commandline.interactive.php

Вот как я устанавливаю модуль, перекомпилируя исходные коды php:

Найти предыдущую команду Configure:

 $ php -i | grep configure Configure Command => './configure' '--prefix=/usr/local/php7' ... 

Затем перекомпилируйте:

 ./configure --prefix=/usr/local/php7 \ --with-readline \ ... $ make clean $ make $ make test $ sudo make install 

Проверьте, установлен ли модуль чтения :

 $ php m | grep readline readline 

Затем запустите php Interactive shell:

 $ php -a Interactive shell php > 

Это то, что вы должны увидеть:

 # php -a Interactive shell php > echo 1+1; 2 php > echo PHP_VERSION; 5.3.2-1ubuntu4.14 php > exit #