箭头键在 shell 中不起作用

Arrow keys not working in shell

我正在开始一个 Laravel 5 项目,并尝试 运行 使用 'php artisan tinker' (psy shell) 进行一些实验,但我 运行宁到一些怪异。在 tinker/psy shell 中,按任何箭头键都会将字符文字打印到屏幕上,而不是执行预期的行为(向左和向右移动字符,向上和向下循环最近的命令)。

上正在输出^[[A。 向下正在输出^[[B。 右边是输出^[[C。 左边是输出^[[D.

这可能是我终端的问题,而不是 Laravel 错误。当 运行ning php -a.

时,我遇到了同样的错误行为

我在 OSX 上 运行ning 终端,带有 xterm 仿真。

PHP REPL 没有实现 readline 的行编辑和历史功能。我不知道是否有实现它的 PHP 模块,但你可以这样做:

rlwrap php artisan tinker

您可能需要为您的 OS 安装 rlwrap。

这是因为 PHP 没有使用 readline 支持构建。您可以在使用 --with-readline 参数编译和构建 PHP 时启用此功能。

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

就我而言,我需要安装 php7-readline

sudo zypper in php7-readline                                                       
[sudo] password for root: 
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  php7-readline

1 new package to install.
Overall download size: 64.0 KiB. Already cached: 0 B. After the operation, additional 30.9 KiB will be used.
Continue? [y/n/...? shows all options] (y): 
Retrieving package php7-readline-7.2.1-1.1.x86_64                                                                 (1/1),  64.0 KiB ( 30.9 KiB unpacked)
Retrieving: php7-readline-7.2.1-1.1.x86_64.rpm ......................................................................................[done (8.4 KiB/s)]
Checking for file conflicts: ....................................................................................................................[done]
(1/1) Installing: php7-readline-7.2.1-1.1.x86_64 ................................................................................................[done]

我的os:美分os 我通过 :

解决了这个问题
sudo yum install rlwrap
alias tinker='rlwrap php artisan tinker'