PHPでexec()等のシェル関数を使用するとき、引数にescapeshellarg関数を適用して安全に実行できるようにすると思います。
しかし環境によっては、escapeshellarg関数の戻り値から日本語部分が消えてしまうことがあります。

例)
echo escapeshellarg('テスト.txt');
【結果】.txt


日本語が消えないようにするには、以下の手順を行います。

  1. サーバ上で locale -a コマンドを実行して、一覧にja_JP.utf8が含まれるかどうか確認する

  2. 1.でja_JP.utf8が含まれない場合は、サーバ上で以下のコマンドを実行します

    locale-gen ja_JP.UTF-8

  3. PHPのプログラム上で、escapeshellargが実行される前に、
    <php ?
    setlocale(LC_CTYPE, 'ja_JP.UTF-8');
    を追記します
以上の手順で日本語が消えなくなるはずです。
まだ消えてしまうという場合は、apacheのリロードを行うと良いそうです。