zoukankan      html  css  js  c++  java
  • 解决php的交互式命令行不能正常启动的问题兼介绍psysh

    今天在自己的mac电脑上试着启动php的交互式命令行,发现敲下命令后一直卡在提示进入的地方,但没有出现已经进入的提示符,百度了下应该是与readline有关。

    于是安装php的readline扩展,在php的源码目录中找到readline扩展的源码目录,用phpize命令来安装扩展。

    phpize
    ./configure --with-php-config=php-config工具目录
    make
    make install

    然后在php.ini中添加扩展:

    extension=readline.so

    执行下php -m | grep readline,检查扩展是否生效。注意这里安装的是cli的扩展,所以与cgi无关,所以无需重启php-fpm。可以看下官方文档的介绍针对命令行的扩展:Readline,手册中说:“readline 扩展函数实现了访问 GNU Readline 库的接口. 这些函数提供了可编辑的命令行. 一个例子是在 Bash 中允许你使用箭头按键来插入字符或者翻看历史命令. 因为这个库的交互特性,这个功能在你写的 Web 程序中没多大用处, 但是当你写的脚本被用在命令行中时非常有用.” 

    所以,如果你想使用php的repl,那就需要安装这个扩展,同时安装时需要注意系统中应该有GNU Readline库,因为php的readline需要访问这个库的接口。如果没有这个库的话,很多交互式命令行是不能正常使用的,比如敲击方向键无法移动光标反而出现了乱码一样的怪字符。

    命令行下执行php -a就可以启动repl。另外,国外有人做了一个比php原生的repl稍微好用些的repl,叫psysh,感兴趣的朋友可以看看。

    linux下一般会有readline工具和支持这个工具的包,它提供了交互式的文本编辑功能。很多语言和工具,比如python、node、ruby等也都提供了交互式命令行工具,也可以把它叫做交互式解释器,英文缩写为REPL(read-eval-print-loop)。

  • 相关阅读:
    Gym 100418J Lucky tickets(数位dp)
    UI各种小控件的用法
    安卓系统底层C语言算法之測试參数是几个long型的算法
    Chisel Tutorial(一)——Chisel介绍
    java中super的作用
    flume採集数据导入elasticsearch 配置
    UML中的序列图(时序图)
    简单的Queue
    UNIX环境高级编程(5):文件I/O(1)
    四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享
  • 原文地址:https://www.cnblogs.com/yangtoude/p/php-repl-radline-psysh.html
Copyright © 2011-2022 走看看