2日ほど泥沼にハマって抜け出せなくなっていた問題が解決できたので、その謎を共有します。 元々はこんなシステムを PHP で作ろうとしていました: - 画像をアップロードできる - アップロード画像は ID を付与した上で MySQL の BLOB (バイナリ・ラージ・オブジェクト)として格納する - ID を指定して、アップロード済みの画像を表示させることができる 自分自身でも Java では何度も作ったことのある仕組みで、その PHP 版を作ろうとしただけでした。 いざ作って動かしてみると、アップロードは成功します。でも表示時に画像が壊れてしまい、うまく表示できないのです。この原因究明と解決に時間を使ってしまいました。 もう少し詳しく状況を説明します。調べていくうちに同じ現象が MySQL を使わなくても再現できることがわかったので、話をシンプルにするために MySQL なしで説明します