前提・実現したいこと
PHPで製品データ(プログラムやマニュアル等)をアップロードして、管理するシステムを作成しております。
アップロードする際には、事前に製品データを纏めてZIP化にしております。
その後にアップロードしたファイルをダウンロードするという機能を作成しております。
ならびに、製品データのマニュアルのみをダウンロードするという機能を実装中で、ZIPファイルをサーバー上で解凍するという処理を作成中に
以下のエラーメッセージが発生致しました。
ZIPファイルの中身
あいうえお.pdf
かきくけこ.pdf
発生している問題・エラーメッセージ
実行結果:2 /var/www/html/forCustomer/license/test2.php:10: array (size=7) 0 => string 'Archive: /tmp/テスト.zip' (length=22) 1 => string 'checkdir error: cannot create /tmp/???.zip' (length=43) 2 => string ' Invalid or incomplete multibyte or wide character' (length=66) 3 => string ' unable to process ???/?????.pdf' (length=48) 4 => string 'checkdir error: cannot create /tmp/???.zip' (length=43) 5 => string ' Invalid or incomplete multibyte or wide character' (length=66) 6 => string ' unable to process ???/?????.pdf'
該当のソースコード
PHP
1$path = /tmp/; //解凍するフォルダ名までの絶対パス 2$file = /tmp/テスト.zip; //解凍するファイル名までの絶対パス 3 4//unzipコマンドを使った解凍処理 5$cmd = "unzip -O sjis " . $file . " -d " . $path ." 2>&1"; 6exec($cmd, $opt, $return_ver); 7echo '実行結果:'.$return_ver; 8var_dump($opt);
試したこと
エンコードが原因ですので、「sjis」から「CP932」に変更しましたが変わりませんでした。
Linuxサーバーで直接コマンド入力した結果、文字化けも起こらず日本語表記になっていました。
PHPコードからですと、文字化けになってしまいます。
お手数をおかけいたしますが、ご教授お願い致します。
補足情報(FW/ツールのバージョンなど)
PHP 7.2.26
CentOS 7.7.1908
文字化けが起こらずに解凍できるという「unar」というコマンドがありますが、CentOSに配布されていないようで色々なサイトから
インストール方法を調べましたが、なかなか見つかりませんでした。
CentOSで「unar」のインストール方法を知っている方がいれば、こちらもご教授いただければ幸いです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/30 09:16
2020/01/30 09:42