Laravel の tinker で日本語が入力出来ない
Laravel
の tinker
で日本語が入力出来ない時にやったこと
1. 環境
$ uname -a
Linux ela2020.dev.vm 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
$ php -v
PHP 7.3.7 (cli) (built: Jul 3 2019 11:30:22) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans
$ php artisan tinker --version
Laravel Framework 5.8.32
2. 現状確認
今の libedit
がどうなっているか確認する。
$ yum info -q libedit.x86_64
Installed Packages
Name : libedit
Arch : x86_64
Version : 3.0
Release : 12.20121213cvs.el7
Size : 239 k
Repo : installed
From repo : anaconda
Summary : The NetBSD Editline library
URL : http://www.thrysoee.dk/editline/
License : BSD
Description : Libedit is an autotool- and libtoolized port of the NetBSD Editline library.
: It provides generic line editing, history, and tokenization functions, similar
: to those found in GNU Readline.
$ ldd `which php` | grep libedit
libedit.so.0 => /lib64/libedit.so.0 (0x00007f8ac072b000)
$ file /lib64/libedit.so.0
/lib64/libedit.so.0: symbolic link to `libedit.so.0.0.42'
3. インストール
libedit
の最新版の入手はこちらから
# cd /usr/local/src/
# wget https://www.thrysoee.dk/editline/libedit-20191211-3.1.tar.gz
# tar zxvf libedit-20191211-3.1.tar.gz
# cd libedit-20191211-3.1/
# ./configure
...(snip)...
configure: error: libncurses, libcurses, or libtermcap is required!
ncurses-devel
で入ってなかったようなのでインストール
# yum install ncurses-devel
あらためて
# ./configure
# make
# make install
# ll /usr/local/lib | grep libedit
-rw-r--r-- 1 root root 1298766 12月 17 21:42 libedit.a
-rwxr-xr-x 1 root root 928 12月 17 21:42 libedit.la
lrwxrwxrwx 1 root root 17 12月 17 21:42 libedit.so -> libedit.so.0.0.62
lrwxrwxrwx 1 root root 17 12月 17 21:42 libedit.so.0 -> libedit.so.0.0.62
-rwxr-xr-x 1 root root 755480 12月 17 21:42 libedit.so.0.0.62
4. シンボリックリンク張り替え
シンボリックリンクを手動で張り直す
まずは、現在の状態を確認しておく。
# cd /lib64/
# ll | grep libedit
lrwxrwxrwx. 1 root root 17 3月 1 2019 libedit.so.0 -> libedit.so.0.0.42
-rwxr-xr-x. 1 root root 235064 6月 10 2014 libedit.so.0.0.42
先ほどインストールした libedit.so.0.0.62
へのシンボリックリンクとなるように切り替える。
# unlink libedit.so.0
# ln -s /usr/local/lib/libedit.so.0 libedit.so.0
# ll | grep libedit
lrwxrwxrwx 1 root root 27 12月 17 21:48 libedit.so.0 -> /usr/local/lib/libedit.so.0
-rwxr-xr-x. 1 root root 235064 6月 10 2014 libedit.so.0.0.42
5. 確認
php -a
で確認
$ php -a
Interactive shell
php > echo 'あいう';
あいう
tinker
で確認
$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.3.7 — cli) by Justin Hileman
>>> echo 'あいう';
あいう⏎