Я попытался выполнить простой PHP-код в PHP-интерпретаторе. Когда я выполнил команду php -a
я получаю сообщение
Интерактивный режим включен
Без места для ввода php. Но я могу выполнить php-код через команду php -r
. например:
php -r "echo 'Hello stackoverflow!';"
Привет, stackoverflow!
Установите это:
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 .
make clean
перед окончательной сборкой? php -m
ли функция php -m
readline как включенную функцию? (PHP построен с опцией --with-readline
) После того, как я устал компилировать его на каждой машине, я использовал 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 #