Ответ 1
Установите это:
php5-readline
затем попробуйте использовать:
php -a
Я попытался выполнить простой 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 скомпилирован с опцией - с-readline.
Кажется, что существует ошибка компиляции/связи между вашим PHP и libreadline. Это описано в PHP Bug # 48759.
make clean
до окончательной сборки?php -m
список readline как включенную функцию? (Встроен ли PHP с опцией --with-readline
)Вы находитесь в интерактивном режиме, но без подсказки, так как у вас может не быть доступного режима чтения. Вам просто нужно начать вводить текст, и ваши команды будут оцениваться после нажатия клавиши ввода. Не похоже, что что-то происходит, но если вы входите, например:
<?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, чтобы сразу вернуть весь вывод.
После того как я устал компилировать его на каждой машине, я использовал 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 -m | grep readline
Если ничего не отображается, установите модуль readline: sudo apt-get install php5-readline
После установки модуля вы можете проверить его наличие с помощью предыдущей команды, а затем ввести интерактивный режим: php -a
Если вы используете Mac, тогда установите Homebrew (http://brew.sh), затем введите: brew установить 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
Проверьте, установлен ли модуль readline:
$ 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
#