Laravel Tinker - 在命令行中箭头键无法使用

14
我正在开始一个Laravel 5项目,并尝试使用'php artisan tinker'(psy shell)进行一些实验,但遇到了一些奇怪的问题。在tinker/psy shell中,按下任何箭头键都会将字符文字打印到屏幕上,而不是执行预期的行为(向左和向右移动字符,向上和向下循环最近的命令)。
向上输出'^[[A'。 向下输出'^[[B'。 向右输出'^[[C'。 向左输出'^[[D'。
这可能是我的终端问题,而不是Laravel的错误。当运行'php -a'时,我也遇到了相同的错误行为。
我在OSX上运行终端,使用xterm仿真。
4个回答

38

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

rlwrap php artisan tinker

您可能需要为您的操作系统安装rlwrap。


1
谢谢!那似乎是我的问题。有一个readline php库:http://php.net/manual/en/book.readline.php,但rlwrap太容易了。 - Sean Fraser
成功了!我已经安装了rlwrap并使用rlwrap php artisan tinker启动了Tinker。现在我可以使用方向箭头了。 - Charles
1
谢谢你的提示!对于那些想知道如何在OSX上轻松安装rlwrap的人,只需在Homebrew主页(http://brew.sh)中粘贴一行代码,然后在控制台中输入:`brew install rlwrap`。 - OMA

6

这不是对问题的回答。一旦您拥有足够的声望,您就可以评论任何帖子; 相反,提供不需要求问者澄清的答案。- 来自审核 - Mike Rockétt
1
嗨Mike。这个解决方案正是我在Linux和OSX中修复箭头和退格键问题的方法。链接指向支持我的答案的文档。问题不在于psysh,而是PHP缺乏readline支持。如果您认为需要澄清,那么对您来说什么不清楚? - John
谢谢,这正是我正在寻找的。 - HeySora

2

MY os: centos I solved the problem by :

sudo yum install rlwrap
alias tinker='rlwrap php artisan tinker'


0
在我的情况下,我需要安装 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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接