升级PHP 8后交互式shell无法输入Unicode字符问题求助
PHP 8 交互式shell非ASCII字符无法输入解决方案
- 检查readline扩展安装状态
执行php -m | grep readline确认扩展是否启用,无输出说明未安装。不同发行版安装对应版本的扩展包即可,例如Debian/Ubuntu系列执行apt install php8.x-readline(将x替换为你的实际PHP次版本号),安装完成后重启终端重试。 - 校验readline依赖库实现
执行php -i | grep 'Readline library'查看底层依赖库,若输出为libedit而非GNU readline,会存在多字节字符支持缺陷,该问题为PHP 8版本最常见诱因。可重新编译PHP,编译参数替换为--with-readline(删除原有--with-libedit参数),使用GNU readline实现即可解决。 - 确认系统locale配置
执行locale检查所有环境变量值是否均为UTF-8编码格式,若存在非UTF-8的配置,可执行export LC_ALL=[你的语言编码].UTF-8临时生效,也可将该配置写入.bashrc/.zshrc等shell配置文件永久生效。 - 调整readline编码配置
在php.ini配置文件中新增readline.input_encoding = "UTF-8",保存后重启终端重试即可。 - 临时替代方案
若不想调整PHP原生配置,可使用第三方交互式shell PsySH替代原生php -a,其对多字节字符输入的支持更完善,可通过composer全局安装使用。
内容的提问来源于stack exchange,提问作者Andy McCoy
相关产品推荐
相关产品推荐

