Backport(バックポート) #2613
完了PHP 5.3.4 以降の場合に画像付きメール投稿が失敗する
100%
説明
概要¶
この問題は #2261 の対応中に発見されました。この問題 http://redmine.openpne.jp/issues/2261#note-5 については本チケットで扱います。
PHPのバージョンが新しいとき(この意味は以下を参照)、メール投稿において画像を添付すると(添付画像の個数は任意)添付画像が受け付けられない。
PHPのバージョンと base64_decode() の挙動/RFC3548¶
最後に改行が余分に入ったbase64エンコードデータをstrict modeで処理した場合の挙動をPHP 5.2.17, 5.3.0〜5.3.6の各バージョンで調べたところ、5.3.4 以降で FALSE が返るようになっていました。
PHP 5.3.4 (see http://php.net/ChangeLog-5.php#5.3.4 ) において、base64_decode() 関連で修正があったようです。(Base64について定義しているRFC3548に厳格に従うよう修正されたということでしょうか)
http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/base64.c?r1=305779&r2=305778&pathrev=305779
http://www.ietf.org/rfc/rfc3548.txt
原因¶
最新のPHPにおいて、base64_decode() を strictモード(第2引数をtrue)で使うとmultipartから取得した画像データ(base64-encoded text)の末尾に改行が余分に含まれていると FALSE を返す。添付画像は application/x-empty とみなされ画像とはみなされず無視される。
修正方法¶
base64_decode($content, true); の箇所を base64_decode(rtrim($content), true); に変更する。
Minoru Takai さんが約13年前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 8f30c6aaf83602a32a3e901bf0e6f9ca2282758e で適用されました。
Kousuke Ebihara さんが約13年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 担当者 を Minoru Takai にセット
- 進捗率 を 50 から 70 に変更
Yuma Sakata さんが約13年前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。