vk-all-in-one-expansion-unit icon indicating copy to clipboard operation
vk-all-in-one-expansion-unit copied to clipboard

mb_strtolower( が使われている箇所にフォールバックを入れる

Open kurudrive opened this issue 2 years ago • 2 comments

サーバーによって落ちてしまうため一応 function_exixt を経由させる。 ない場合はそのままスルーさせる(誤動作の可能性はあるがサーバーが落ちる方が良くないため)

https://vws.vektor-inc.co.jp/forums/topic/%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%82%a8%e3%83%a9%e3%83%bc%ef%bc%9avk-all-in-one-expansion-unit_vk-block-patterns#post-62673

  • [ ] ExUnit
  • [ ] VK Block Patterns
  • [ ] おそらく VK Block Pattern Plugin Generator も

kurudrive avatar Mar 04 '22 02:03 kurudrive

今回の件は yum install php-mbstring で解決したということは php-mbstring が入っていない環境では軒並み落ちるということになります。

php-mbstring が関係しそうな関数は下記にまとめられています。 https://www.php.net/manual/ja/ref.mbstring.php

mb_strtolower の場合

  • mb_strtolower が存在すれば mb_strtolower を実行
  • そうでなければ strtolower を実行

という処理のほうが良さそうな気がします。

drill-lancer avatar Mar 29 '22 04:03 drill-lancer

mb_strtolowerは全角英数の小文字化にも対応してくれるというだけですので、全角を考慮する必要がない場面であれば、 単にstrtolowerで代用すれば良いと思います。

↓こんな感じのを定義しておくのもありかなと。

if ( ! function_exists( 'mb_strtolower' )) {
 function mb_strtolower($str) {
   return strtolower($str);
 }
}

ちなみに、日本語環境の場合ですと、mbstring入っていないのは致命的というかありえないぐらいなので、レンタルサーバーであれば、絶対入っている思います。よってVPSで自主サーバー管理しているようなユーザーで自分でPHPを入れて、mbstringモジュール入れ忘れた的なケースが多いと思います。

とはいえ、海外環境の場合はmbstring入っていないことはありえるので、mb系の関数使っている箇所は考慮したほうがよさそうですね。

mthaichi avatar Mar 29 '22 05:03 mthaichi