Symfoware

Symfowareについての考察blog

PHP パスワード付きzipファイルの作成、解凍(zip,unzipコマンド)

PHPでパスワード付きzipファイルの作成方法を調べてみました。


zipファイルの作成



パスワード無しのzip作成はこちら。
PHPでzipファイルを作成する(ZipArchive)


  1. <?php
  2. $zip = new ZipArchive();
  3. // ZIPファイルを開く
  4. $res = $zip->open('test.zip', ZipArchive::OVERWRITE);
  5. // zipファイルが作れなかったら終了
  6. if ($res !== true) {
  7.     echo "zipファイル作成失敗\n";
  8.     return;
  9. }
  10. // addFileでzipに追加するファイルを指定
  11. $zip->addFile('data/001.jpg');
  12. $zip->addFile('data/002.jpg');
  13. $zip->addFile('data/003.jpg');
  14. // ZIPファイルをクローズ
  15. $zip->close();




パスワード付きのzipファイルは、どうも標準ライブラリでは行えないようです。

zipコマンドを実行することで、パスワード付きのzipが作成できました。


  1. <?php
  2. system('zip -P symfoware test.zip data/001.jpg data/002.jpg data/003.jpg');






解凍



解凍は標準ライブラリで実行できます。
・・・php 5.6以上なら。

動作確認していないですが、多分コードはこんな感じ。


  1. <?php
  2. $zip = new ZipArchive();
  3. $zip->open('test.zip');
  4. $zip->setPassword('symfoware');
  5. $im_string = $zip->getFromName("data/001.jpg");
  6. $im = imagecreatefromstring($im_string);
  7. imagejpeg($im, '001.jpg');




ここを見るまで気が付きませんでした。
password protection for a zip file is not working


php 5.4系ならunzipコマンドに頼るしかなさそうです。


  1. <?php
  2. system('unzip -P symfoware test.zip');

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/03/04(水) 21:22:46|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<無料で100GBのストレージが使える「SHARED」 | ホーム | Python パスワード付きzipファイルの作成、解凍(pyminizip)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1668-d138c91a
この記事にトラックバックする(FC2ブログユーザー)