Project

General

Profile

Bug(バグ) #2476

PHP 5.3.4 以降の場合に画像付きメール投稿が失敗する

Added by Minoru Takai about 8 years ago. Updated about 4 years ago.

Status:
Fixed(完了)
Priority:
High(高め)
Assignee:
Target version:
Start date:
2011-10-06
Due date:
% Done:

100%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

Description

概要

この問題は #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); に変更する。


Related issues

Related to OpenPNE 3 - Bug(バグ) #2261: メール投稿で画像を1つだけ送信すると画像として扱われないことがある Rejected(差し戻し) 2011-07-05
Related to OpenPNE 3 - Backport(バックポート) #2477: PHP 5.3.4 以降の場合に画像付きメール投稿が失敗する Fixed(完了) 2011-10-06
Related to OpenPNE 3 - Backport(バックポート) #2613: PHP 5.3.4 以降の場合に画像付きメール投稿が失敗する Fixed(完了) 2011-10-06

History

#1 Updated by Minoru Takai about 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • Priority changed from Normal(通常) to High(高め)
  • % Done changed from 0 to 50

この問題は当初 #2261 で扱っていたため、コミットは #2261 に紐づいています。

fcab4cf5 で修正されています。また、この修正は #2261 での 1 個目の修正を前提としているため、バックポート時にいきなり fcab4cf5 の差分を取り込もうとしても失敗する可能性があります。

#2 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

#3 Updated by Shouta Kashiwagi almost 8 years ago

  • 3.6 で発生するか set to Unknown (未調査)
  • 3.4 で発生するか set to Unknown (未調査)

テストOKです。

(テスト環境)
[kashiwasan@cloud ~]# php -v
PHP 5.3.10 (cli) (built: Feb 4 2012 07:36:51)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

#4 Updated by Shouta Kashiwagi almost 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

#5 Updated by kaoru n about 4 years ago

  • 3.8 で発生するか set to Unknown (未調査)

Also available in: Atom PDF