新規サイトを作る場合や、大量の画像ファイルなどをサーバー上にアップロードしたいというケースもあるでしょう。この際、FTPソフトを使ってサーバーに上げる方法が一般的ですが、ファイル数が多いとアップロードの際にエラーが発生したり、極端に時間がかかるケース、タイムアウトになるような場合があります。
FileZillaのように複数ファイルを同時に処理しやすいFTPソフトもあったりしますが、特にこだわりが無ければ大量のファイルを上げる際には一度zip化し、サーバー上でunzip、つまり解凍するのが一番です。
ということでそのphpコードがこちら。zipファイルの名前はアップロードするファイル名にしてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php // アップロードされたZIPファイルのパスを指定 $zipFile = 'example.zip'; // 実際のファイル名に変更してください // ZIPアーカイブを開く $zip = new ZipArchive; $res = $zip->open($zipFile); if ($res === TRUE) { // 同じディレクトリに解凍する $zip->extractTo(__DIR__); $zip->close(); echo '解凍が完了しました。'; } else { echo '解凍に失敗しました。'; } ?> |
これをUTF-8(BOMなし)でunzip.phpとして保存し、zipファイルと同じディレクトリにアップロードします。上記のファイルはこちらからもダウンロードできます。(*解凍して中身のphpを編集後にアップロードしてください)
例:
hogehoge.com/wp-content/uploads/2024/10/example.zip
hogehoge.com/wp-content/uploads/2024/10/unzip.php
上記の例の場合、ブラウザから直接hogehoge.com/wp-content/uploads/2024/10/unzip.phpを開くとexample.zipが解凍されます。
備考1:unzip.php が配置されたディレクトリや解凍先のディレクトリに対して、書き込み権限が適切に設定されているか確認してください。権限が不足していると、解凍が失敗する可能性があります。
備考2:ほとんどのケースでは問題になりませんが、WordPressのセキュリティやパーミッション設定に影響を受ける可能性があります。WordPressの設定によっては、PHPスクリプトの実行が制限されている場合があります。
備考3:PHPの標準的な機能では、ZIPファイルの解凍は ZipArchive クラスを使ってサポートされていますが、他の圧縮形式(例:RAR、TAR、GZなど)については追加のライブラリが必要になります。わざわざ他の圧縮形式にする必要もないのでここでは省略します。
コメント