サイト全体のSSL化のためにサーバー移転作業を行っています。
PukiWikiを使って作成している「健康用語WEB事典」の移転の際に、ページに添付している画像が表示されなくなる問題が発生しました。
この問題の詳細と原因、実際の解決法についてまとめます。
問題の詳細
本来は以下のように、添付した画像(化学構造の画像)が文中にインライン表示されるはずなのですが、代替テキストのみが表示されてしまう状態でした。
また、ページ下部の添付ファイル名をクリックしても拡大画像が表示されず、真っ黒な画面のみが表示されてしまいます。
明確なエラーメッセージが表示されず、添付ファイル(エンコードされた形式)もサーバーに間違いなく存在しています。
ファイルを別のサーバーに転送したことでファイルのアクセス権が変化したのかとも思いましたが、パーミッションの再設定を行っても問題は解決しませんでした。
問題の原因
しばらく調査していると、jpg形式の添付画像は表示されているものがあることに気づきました。しかし、画像の一部が崩れたり変色したりしている状態でした。
これは、サーバーやプログラムの問題ではなく、画像ファイル自体がFTPソフトで転送した際に変化していたことが原因でした。
PukiWikiの画像ファイルは、エンコードされた形式でattachディレクトリに保存されています。FTPには「バイナリ」と「ASCII」の2つの転送モードがありますが、バイナリモード以外で転送してしまうとファイルのデータが破損するようです。
ファイルの転送モードをバイナリに固定したところ、正常にページ内で画像が表示されるようになりました。
エンコードされたファイルの転送にはバイナリモードを指定する必要があります。「自動」も転送モードに影響を受ける可能性があるファイル転送には使用しないほうが無難と考えられます。
以上、PukiWikiで正しく画像が表示されない問題についてでした。PukiWikiの問題ではなく、ファイル転送の問題でしたが…