0xd9」エラーが出る問題についてPHPでユーザーからの画像ファイル投稿を受け付ける場合に、GDライブラリを利用したimagecreatefromjpeg()関数を使用すると、まれに以下のようなエラーが出てしまうことがあります。94赤い数字の箇所は画像ファイルによって異なります。要するに「画像ファイル中の0xd9マーカーより前の233バイト部分にゴミ情報がありますよ。」ということでJPEG画像が壊れてるらしいです。この画像は画像ビューワーで見ると問題なく見られます。メタデータ(EXIF等)部分をGDがチェックして独自判断を下しているのでしょう。SC-02C」で撮影された画像ファイルでした。なるとGDライブラリではどうしようもないので、手動でやるのであれば一度ローカルPCにダウンロードしてPhotoshop等の編集ツールで開いて新規画像ファイルにコピペして再アップロードすることになります。してもサーバー上で解決したい!jheadライブラリを導入こういう場合はEXIF情報を除去してくれる「jhead」ライブラリを利用しましょう。通常のLinuxサーバーではデフォルトでインストールされていないので、yumコマンドでインストールします。yumコマンドでjheadパッケージが見つからない場合は、epelリポジトリを追加するとインストールできますよ。サーバーOSのバージョンとCPUの種類でインストールするパッケージが異なるので注意。0:2.90-2.el5Complete!PHPでWarning!を例外処理できるように変更PHPでは通常「imagecreatefromjpeg()」で発生する警告エラー(Warning)を例外処理することはできませんが、set_error_handler()で独自関数を定義することで例外処理することができます。$errline);}この関数を以下のように「try~catch」の前に設定しておきます。//エラーが起こった際の処理系をここに書きます。//その他のエラー処理系をここに書きます。}}//エラー処理系を戻すrestore_error_handler();エラーが発生したらjheadでEXIF情報を除去する0xd9のバイトエラーが発生した場合、以下のような処理でEXIFデータを除去した画像ファイルに入れ替えることができます。(再度imagecreatefromjpeg()等を実行する)}これでエラーが発生しても問題なく変換できるようになります。コメントをキャンセルメールアドレスが公開されることはありません。Webサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。田舎に生まれ育ち東京へ。技術はDTPデザインからプログラミングまで、インフラはCD-ROM全盛からクラウドサーバーまで、いろいろなビジネスを作り、関わってきました(知見を生かして専門学校の講師も3年ほど)。今ではAWSで月間100万PVを超えるサービスを制作・運営しながらさらなるノウハウを蓄積中。このサイトではビジネスをITコンサルタント視点で考え、感じた知見や経験が世の中のお役に立てば、という視点で無料記事として公開しています。最近は機械学習による仕事の効率化を研究中。reserved.代表者のライフハックブログ。