WordPressやSymfonyのTipsを中心にアニメや日常の出来事について語ります。
メニュー

[解決]Symfony2の開発と本番の切り替えでファイルのダウンロードができなくなった問題

この記事は約1分24秒で読めます

simfony-2
ゆっきー
ども、カフェブロガーの悠木です。 お気に入りのカフェはドトールコーヒーです。 14時からの限定スイーツ「シューシャポー」が大好きです。

このページはPHPフレームワーク Symfony2.4.1の記事です。

フロントコントローラの切り替え(app_dev.php → app.php)
を切り替えた際にダウンロードしたzipファイルが正常に解凍できなくなりました。

・システム側でzip生成
・ブラウザからダウンロード
・パソコンに保存後、解凍←ここでエラー

開発環境(app_dev.php)では正常に動きます。
本番環境(app.php)だと動きません!(泣)

破損したzipファイルを
無理やりテキストエディタで恐る恐る開くと・・・

よくわからない2行が先頭に追加されていました。なぜ?

生成されたzipファイルを
サーバーにアクセスして直接見てみると正常に解凍されます。

zipファイル自体は正しく出力されているので
ブラウザからダウンロードする際に余分な情報が付加されているものと考えられる。

開発環境では動作するコード

開発環境では上記のコードで動作していました。

参考になったサイト

こちらの記事が参考になりました。
>> PHPでファイルをダウンロードさせる時のエラーの対処

  • ファイル容量が大きい場合のメモリ不足に対応
  • mb_output_handler() という関数が自動的に呼び出された場合の対応(動画が開けない、画像が開けない)
  • キャッシュが参照できない場合に対応(SSL環境、IE8以下)

上記の点に対応したコードになります。

ダッケルさん、ありがとうございます!
とても参考になりました!

ただ、
これでも
問題は解決しませんでした。

解決方法

最終的には以下のコードで対応しました。

この1行を追加して正常なファイルをダウンロードできました!

出力バッファをクリアしました。

この関数は、出力バッファの内容を破棄します。

>> ob_clean()

ファイルをダウンロードさせるだけだというのに、メンドウですよね・・・

Symfony2おすすめ書籍

関連記事

  1. MySQL
  2. symfony2
  3. Symfony2 Monolog
  4. symfony2
  5. symfony2
  6. symfony2

コメントをお待ちしております

PR

カテゴリー