サンプルプログラム

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';");
?>

ディレクトリ構造を無視して圧縮したい場合

上記を圧縮すると、解凍した際に “bak/” というディレクトリ構造が付加されて圧縮されることになります。

そのディレクトリ構造を無視して、単純にファイルだけを圧縮したい場合には “-j” オプションを付けます。

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

COMMENT

メールアドレスが公開されることはありません。