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)。

  • 相关阅读:
    添加远程库
    远程仓库
    删除url中某个参数
    html2canvas.js——HTML转Canvas工具
    vue-cli3与vue-cli2的区别和vue-cli 怎么修改配置
    vue打包后出现一些map文件的解决方法
    微信app右上角自带分享功能
    微信授权获取用户openId的方法和步骤
    支付宝小程序webview里的h5跳转回小程序
    new Date
  • 原文地址:https://www.cnblogs.com/yangtoude/p/php-repl-radline-psysh.html
Copyright © 2011-2022 走看看