【TIPS】FTP経由で大量のファイルをアップロードしたい場合は、zipファイルでアップロードしてサーバー上で解凍した方がいい (FTPでのアップロードエラー/タイムアウトなどの対処)

新規サイトを作る場合や、大量の画像ファイルなどをサーバー上にアップロードしたいというケースもあるでしょう。この際、FTPソフトを使ってサーバーに上げる方法が一般的ですが、ファイル数が多いとアップロードの際にエラーが発生したり、極端に時間がかかるケース、タイムアウトになるような場合があります。

FileZillaのように複数ファイルを同時に処理しやすいFTPソフトもあったりしますが、特にこだわりが無ければ大量のファイルを上げる際には一度zip化し、サーバー上でunzip、つまり解凍するのが一番です。

ということでそのphpコードがこちら。zipファイルの名前はアップロードするファイル名にしてください。

これを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など)については追加のライブラリが必要になります。わざわざ他の圧縮形式にする必要もないのでここでは省略します。

コメント