LoginSignup
7
6

More than 1 year has passed since last update.

Laravel Sailのtinkerで日本語が表示できない時の対応方法

Posted at

Sailの環境を構築して、tinkerで日本語を表示すると以下のようになりました。
Dockerfileをカスタマイズすることで、日本語も表示できるようになったので、その時の手順を書いておきます。

% sail tinker
Psy Shell v0.11.8 (PHP 8.1.10 — cli) by Justin Hileman
>>> print('あああ')
<E3><81><82><E3><81><82><E3><81><82><E2><8F><8E>
=> 1

環境

% sail artisan -V
Laravel Framework 9.31.0

% sail version   
Docker Compose version v2.10.2

対応方法

docker-compose.ymlのservices.laravel.test.build.contextで指定したバージョンに対応するDockerfileをカスタマイズします。
ここでは、services.laravel.test.build.contextが./docker/8.1になっていることを前提とします。

1. Dockerfileに、# 日本語対応 追加ここからから# 追加ここまでの部分を追加

docker/8.1/Dockerfile
・・・・・・・・・・省略・・・・・・・・・・
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 日本語対応 追加ここから
RUN apt-get update && apt-get install -y language-pack-ja && \
    update-locale LANG=ja_JP.UTF-8

ENV LANG=ja_JP.UTF-8
# 追加ここまで

RUN apt-get update \
    && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 \
・・・・・・・・・・省略・・・・・・・・・・

2. Dockerイメージを再ビルドしてからSail起動

% sail build --no-cache
% sail up -d

tinkerで日本語が表示されました。

% sail tinker
Psy Shell v0.11.8 (PHP 8.1.10 — cli) by Justin Hileman
>>> print('あああ')
あああ⏎
=> 1

補足

Sailの環境は、初期状態ではDockerfileが存在しませんでした。

sail artisan sail:publish

を実行すると、Dockerfileとその他の設定ファイルが、アプリケーションのルートディレクトリ内のdockerディレクトリに配置されます。
https://readouble.com/laravel/9.x/ja/sail.html

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6