PHPでexec()等のシェル関数を使用するとき、引数にescapeshellarg関数を適用して安全に実行できるようにすると思います。
しかし環境によっては、escapeshellarg関数の戻り値から日本語部分が消えてしまうことがあります。
例)
日本語が消えないようにするには、以下の手順を行います。
まだ消えてしまうという場合は、apacheのリロードを行うと良いそうです。
しかし環境によっては、escapeshellarg関数の戻り値から日本語部分が消えてしまうことがあります。
例)
echo escapeshellarg('テスト.txt');
【結果】.txt日本語が消えないようにするには、以下の手順を行います。
- サーバ上で locale -a コマンドを実行して、一覧にja_JP.utf8が含まれるかどうか確認する
- 1.でja_JP.utf8が含まれない場合は、サーバ上で以下のコマンドを実行します
locale-gen ja_JP.UTF-8 - PHPのプログラム上で、escapeshellargが実行される前に、
<php ?
を追記します
setlocale(LC_CTYPE, 'ja_JP.UTF-8');
まだ消えてしまうという場合は、apacheのリロードを行うと良いそうです。