私が開発に関わっているモジュールの PHP 5.4 と MySQLi 対応の進捗状況のまとめページ
PHP 5.4 から htmlspecialchars() 関数の第三引数(文字エンコーディング)のデフォルト値が ISO-8869-1 から UTF-8 に変更になったとともに、文字エンコーディングとして不正なバイト列がある場合は空文字を返すようになりました。
UTF-8 環境下では問題になるケースは少ないですが、それ以外(EUC-JPなど)の環境下では、コンテンツが部分的に表示されなくなるなどの深刻な問題が生じます。
その対策として、第三引数を明示的に指定する必要があります。
PHP 5.5 から XOOPS[6] で使用されている mysql 系の関数は、非奨励関数となります。コア側の対応としては、新たに mysqli を利用したデータベースクラス[10]を用意し、mainfile.php の define('XOOPS_DB_TYPE', 'mysql'); を define('XOOPS_DB_TYPE', 'mysqli'); と書き換えることで移行可能です。
モジュール側の対応は、"mysqi_" で grep を掛けて、見つかったら、XoopsDatabase の対応するメソッドへ変更、メソッドがなければ、$conn を見て場合分けをして処理をします。
場合分けは、例えば次のような感じです。
1 2 3 4 5 6 7 8 9 10 | |
| モジュール名 | PHP5.4 | MySQLi |
|---|---|---|
| 当該コミット*1 | ||
| xoopscube リポジトリ | ||
| altsys | ◯ | |
| protector | ◯[12] | |
| xupdate | ◯[13] | ◯ |
| XoopsX リポジトリ | ||
| bulletin | ◯[14] | |
| cubeUtils | ◯ | |
| d3downloads | ◯[15] | |
| d3forum | ◯[16] | |
| d3pipes | ◯[17] | ◯[18] |
| gnavi | ◯[19] | |
| mailform | ◯[20] | |
| multiMenu | ◯ | |
| myalbum | ◯ | |
| myfriend | ◯ | |
| none | ◯ | |
| openid | ◯[21] | ◯[22] |
| piCal | ◯ | |
| pico | ◯[23] | |
| search | ◯[24] | ◯ |
| xpress | ||
| xsns | ◯[25] | |
| xwords | ◯ | |
| nao-pon[3] リポジトリ | ||
| ckeditor4 | ◯ | ◯[26] |
| hypconf(HypCommon) | ◯[27] | ◯[28] |
| tagmemo | ◯[29] | ◯[30] |
| xelfinder | ◯[31] | ◯[32]◯[33] |
| xpwiki[34] | ◯[35] | ◯[36] |
| Happy Linux リポジトリ | ||
| happy_linux | ◯[37] | |
| liaise | ◯ | |
| rssc | ◯ | |
| rssc_headline | ◯ | |
| smartsection | ◯[38] | |
| smartobject | ◯[39] | |
| timeline | ◯[40] | |
| weblinks | ◯ | |
| webmap3 | ◯[41] | |
| webphoto | ◯[42] | |
| whatsnew | ◯*2 | |
(This host) = https://xoops.hypweb.net