ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#1472 closed defect (fixed)

PHP4.3.2以下の環境で、文字列を切り取っている箇所でWarningが発生する

Reported by: kiwa Owned by: ogawa
Priority: critical Milestone: OpenPNE2.10.1
Component: その他 Version: 2.10.x & 2.11.x
Keywords: OpenPNE2.11.2 Cc:

Description (last modified by ogawa)

http://sns.openpne.jp/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=2771 より転記

本日2.10.0にアップグレードしてみたところ、最新レビュー(マイフレンド・自分のともに)のタイトルの前に以下のワーニングが出ました。全てのレビューではなく、いくつかです。ワーニングの後改行してもともとのタイトルが表示されています。ワーニング部分もリンクになっています。

Warning: Wrong parameter count for preg_match() in /****/OpenPNE/webapp/lib/smarty_plugins/modifier.t_truncate.php on line 74
レビューのタイトル

環境はCentOS3.8の自前サーバです
Apache2.0.61
MySQL4.1.21
PHP4.3.2
2週間ほど前に2.6.1から2.8.5にあげた上で本日2.10.0にアップグレードしました。
恐らく、PHPのバージョンが古いので、preg_matchの引数に対応できていないのでしょう。
それが原因のような気がします。

あ、あった。

PHP: preg_match - Manual
http://php.morva.net/manual/ja/function.preg-match.php

変更履歴
4.3.3 パラメータ offset が追加されました。

つまり、エラーになっているmodifier.t_truncate.phpの該当行

while (preg_match('/\[[a-z]:[0-9]+\]/i', $string, $matches, PREG_OFFSET_CAPTURE, $offset)) {

にある$offsetにPHP4.3.2が未対応なのでワーニングが出ているわけです。

PHPのバージョンを上げましょう。

Change History (14)

comment:1 Changed 14 years ago by kiwa

Priority: minorcritical

comment:2 Changed 14 years ago by kiwa

Owner: changed from nobody to ogawa

再現チームでは難しいので判断をお願いします。

comment:3 Changed 14 years ago by ebihara

Keywords: 再現待ち removed

2.10.1での修正候補とします。ひとまず再現待ちから外しておきます

comment:4 Changed 14 years ago by ebihara

Owner: changed from ogawa to nobody

comment:5 Changed 14 years ago by ebihara

Milestone: OpenPNE2.10.1

comment:6 Changed 14 years ago by ebihara

Owner: changed from nobody to ebihara
Status: newassigned

comment:7 Changed 14 years ago by ebihara

Keywords: 確認中 added
Owner: changed from ebihara to ogawa
Status: assignednew

r4582で対応しました。ご確認ください。

comment:8 Changed 14 years ago by tejimaa

Description: modified (diff)

コメント。

comment:9 Changed 14 years ago by ogawa

Description: modified (diff)
Keywords: 確認中 removed
Owner: changed from ogawa to ebihara

複数絵文字の場合に誤動作すると思われるので修正お願いします。

以下、会話ログ。

おがわ の発言 (12:27):
  絵文字のtruncate
  見たんだけどさ
海老原昂輔@゜皿゜ の発言 (12:27):
  はい
おがわ の発言 (12:27):
  あれだめっぽくね?
海老原昂輔@゜皿゜ の発言 (12:27):
  え
おがわ の発言 (12:28):
  substrを対象にしたらさ
  offsetの値変わるよね
海老原昂輔@゜皿゜ の発言 (12:28):
  あー
おがわ の発言 (12:28):
  よく見てないけど
  変更点少なすぎる気がする
おがわ の発言 (12:29):
  パッと見複数絵文字がある場合怪しいような感じ
海老原昂輔@゜皿゜ の発言 (12:29):
  たしかに
海老原昂輔@゜皿゜ の発言 (12:30):
  あーこれだめっぽいな
おがわ の発言 (12:30):
  だよねだよね
海老原昂輔@゜皿゜ の発言 (12:31):
  どうしたものか
  substr使うなら、
おがわ の発言 (12:32):
  substr路線なら再帰関数の方がきれいかもね
海老原昂輔@゜皿゜ の発言 (12:32):
  ぬ
  再帰か

comment:10 Changed 14 years ago by ebihara

Status: newassigned

やります

comment:11 Changed 14 years ago by ogawa

Owner: changed from ebihara to ogawa
Status: assignednew

やります

comment:12 Changed 14 years ago by ogawa

Component: pne-adminpne-framework
Status: newassigned
Summary: PHP4.3.3以下の環境だと2.10でWarningが発生PHP4.3.2以下の環境で、文字列を切り取っている箇所でWarningが発生する

comment:13 Changed 14 years ago by ogawa

Resolution: fixed
Status: assignedclosed

PHP4.3.2でも動くように、$offsetを使わない実装に変えました。フラグ PREG_OFFSET_CAPTURE は使用しているのでPHP4.3.0以降でしか動作しません。

comment:14 Changed 14 years ago by kiwa

Keywords: OpenPNE2.11.2 added
Note: See TracTickets for help on using tickets.