プログラミング基礎知識

PHP 1行でファイルを zip 圧縮してパスワードをかける方法(サンプル付き)

PHP WordPress データベースのバックアップファイルを保存する時などに、ディスクスペースの確保とセキュリティ保護のため パスワード付きで zip 圧縮する方法をご紹介します。

exec コマンドで zip 圧縮する

Linux サーバーには “zip” コマンドが用意されており、PHP から zip コマンドを実行することでサーバー内の1ファイルを圧縮することができます。

エックスサーバーなど WordPress を運用できるようなレンタルサーバーの OS は Linux サーバーであることが多いです。

基本書式

exec(“zip ‘$strTargetFileName’ ‘$strSourceFileName’;”);

ファイル “sample.sql” を圧縮して “sample.zip” ファイルを生成するサンプルプログラムは以下の通りになります。

<?php
  echo exec("zip 'sample.zip' 'sample.sql';");
?>

パスワードを付けて圧縮する場合

exec(“zip -P ‘$strPassword’ ‘$strTargetFileName’ ‘$strSourceFileName’;”);

“sample.sql” ファイルに パスワード “hogehogefugafuga” を付けて圧縮し “sample.zip” ファイルを生成するサンプルプログラムは以下の通りになります。

<?php
  echo exec("zip -P 'hogehogefugafuga' 'sample.zip' 'sample.sql';");
?>

別ディレクトリの場合

圧縮するファイルが “bak/” など、別ディレクトリにある場合には 行頭に “cd” コマンドを付けてディレクトリを移動しておきます。

<?php
  echo exec("cd 'bak/'; zip -P 'hogehogefugafuga' 'sample.zip' 'sample.sql';");
?>
プログラミング相談受付中

自営エンジニア歴 20年以上の 当ブログ作者が、プログラミングに関するオンライン相談(zoom 等)を受付中です。言語は HTML CSS JavaScript jQuery PHP MySQL VBScript など…

詳細・お問い合わせはこちら