Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP8.1で大改修が入ったと噂のmbstringで実際に遭遇した問題たち / Problems encountered with mbstring in PHP 8.1

PHP8.1で大改修が入ったと噂のmbstringで実際に遭遇した問題たち / Problems encountered with mbstring in PHP 8.1

PHPerKaigi 2023 スポンサーセッション
サイボウズGaroon開発チームの「完成度低いの歓迎LT大会」(PHPerKaigi出張版) 内で発表したLT
https://fortee.jp/phperkaigi-2023/proposal/b3cf069f-e7bb-44e5-97cc-4f2def2a6aa6

Chiba Tairi

March 24, 2023
Tweet

More Decks by Chiba Tairi

Other Decks in Programming

Transcript

  1. 3 #Garoon 開発 #完成度低いの歓迎LT大会 3 - ぱくとま(千葉 泰理) - Twitter:

    @pakutoma - Garoon 開発チーム Yukimiチーム - PHPやライブラリの更新などを主にするチームです - 2022年度 新卒入社(あと一週間で2年目……!) 自己紹介
  2. 4 #Garoon 開発 #完成度低いの歓迎LT大会 4 - サイボウズ Garoon の PHP

    8.1 移行のトラブル - mb_strcut() のバグに遭遇した - mb_detect_encoding() の仕様変更に巻き込まれた - 5分で話しきれないです - サイボウズで後日談LTをやります(宣伝) - 興味がある方はぜひ!!! 今日話すこと
  3. 5 #Garoon 開発 #完成度低いの歓迎LT大会 5 - mb_strcut(): 文字列を切り詰めてくれる! - Garoonではメールの文字列制限に利用

    - 文字列が文字の途中で切れてしまうバグ - 「あaいb」 を切り詰めると、「あa?」に - 「い」の途中で文字列が切れてしまう - JISやISO-2022-JPで発生 トラブル1: mb_strcut() のバグ
  4. 6 #Garoon 開発 #完成度低いの歓迎LT大会 6 - 私が報告しました!!!!! (#9535) - 初めてissue報告しましたが、思ったより敷居が低かったです

    - GitHub上で完結出来るのもありがたかった - 素早く修正していただいた - リリースまでタイムラグがあるので、修正内容をパッチとして 取り込んで社内で検証しました バグへの対応
  5. 7 #Garoon 開発 #完成度低いの歓迎LT大会 7 - mb_detect_encoding(): エンコードの自動判定 - Garoonでは受信メールのエンコーディング判定に利用

    - mb_detect_encoding()の仕様変更 - 1. エンコード判定時に引数の順序に従わなくなった - 2. 文字の出現頻度によって重み付けされるようになった - 人名用漢字が化けるようになった💀 トラブル2: mb_detect_encoding()
  6. 8 #Garoon 開発 #完成度低いの歓迎LT大会 8 - mb_check_encoding()などを利用して修正 - 検証時、mb_check_encoding()のバグを発見 -

    PHP 8.0でfalseと判定される文字列がtrueと判定される - バグ報告(#10648)したら修正にも関わることに - チェック関数を追加するPRを作成し、現在レビュー段階 - Alex Dowad氏やtekimenさんに大変お世話になってます - ISO-2022-JPとUTF-7の仕様に異常に詳しくなっていく 対応時にバグに遭遇
  7. 9 #Garoon 開発 #完成度低いの歓迎LT大会 9 - mbstringには大規模な変更が入っています - 修正されたバグもたくさん、新たなバグもたくさん -

    しっかり検証したほうが良さそうです - PHPのバグ報告・PRは敷居が低い - GitHubで完結するし、優しく対応してもらえる - コントリビュートしていくぞ! - 話しきれなかった分は後日談LTで話します! まとめ