WordPressのDownload MonitorでDLしたファイルが破損した問題のメモ

WordPressのプラグイン「Download Monitor」で管理しているファイルをダウンロードすると、ダウンロードしたファイルが破損していた。
その時の忘備録的なメモ

2015_0318_0214_04
本来1MBぐらいあるはずのファイルがこのように小さなファイルサイズになってて開くこともできない。
3.86kbってのはディスク上の最小サイズの単位っぽい

PHPのエラーは出力されないし、類似しているプラグイン「WordPress Download Manager」や「Delightful Downloads」でも同様の症状だった。

新規インストールしたばかりのWordPressでも同様だったので、サーバーとの相性が悪いのかもしれない。
そうだとしたら今お借りしてるサーバーは共有サーバー(freeweb無料版)なので、php.ini の設定等色々弄れないから困った。

「Download Monitor」ver1.6.4 のソースを見てみることにした。
パスは「 (WordPressのルートディレクトリ)/wp-content/plugins/download-monitor/includes/ 」

ダウンロードを記述しているのは「 class-dlm-download-handler.php 」の380行目あたりからっぽい

何が問題あるのかわからないけど、ここのHTTPヘッダ送信が上手くいってない模様。
「 $headers[‘Content-Length’] 」のところでファイルサイズが指定できていないのだろうか。

個人的には小さいサイズのzipファイルしかアップロードする予定はないし、パスワードとかも使わないので、アップロードしたファイルにリダイレクトしてくれればそれでよかった。
なので403行目の

これを

このようにコメントアウトして、代わりにLocationヘッダでダウンロードファイルにリダイレクトするように追加した。

強引な方法だけど、とりあえずダウンロードしたファイルは正常になった。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です