私が開発に関わっているモジュールの PHP 5.4 と MySQLi 対応の進捗状況のまとめページ
PHP 5.4 から htmlspecialchars() 関数の第三引数(文字エンコーディング)のデフォルト値が ISO-8869-1 から UTF-8 に変更になったとともに、文字エンコーディングとして不正なバイト列がある場合は空文字を返すようになりました。
UTF-8 環境下では問題になるケースは少ないですが、それ以外(EUC-JPなど)の環境下では、コンテンツが部分的に表示されなくなるなどの深刻な問題が生じます。
その対策として、第三引数を明示的に指定する必要があります。
PHP 5.5 から XOOPS で使用されている mysql 系の関数は、非奨励関数となります。コア側の対応としては、新たに mysqli を利用したデータベースクラスを用意し、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 | ◯ | |
| xupdate | ◯ | ◯ |
| XoopsX リポジトリ | ||
| bulletin | ◯ | |
| cubeUtils | ◯ | |
| d3downloads | ◯ | |
| d3forum | ◯ | |
| d3pipes | ◯ | ◯ |
| gnavi | ◯ | |
| mailform | ◯ | |
| multiMenu | ◯ | |
| myalbum | ◯ | |
| myfriend | ◯ | |
| none | ◯ | |
| openid | ◯ | ◯ |
| piCal | ◯ | |
| pico | ◯ | |
| search | ◯ | ◯ |
| xpress | ||
| xsns | ◯ | |
| xwords | ◯ | |
| nao-pon リポジトリ | ||
| ckeditor4 | ◯ | ◯ |
| hypconf(HypCommon) | ◯ | ◯ |
| tagmemo | ◯ | ◯ |
| xelfinder | ◯ | ◯◯ |
| xpwiki | ◯ | ◯ |
| Happy Linux リポジトリ | ||
| happy_linux | ◯ | |
| liaise | ◯ | |
| rssc | ◯ | |
| rssc_headline | ◯ | |
| smartsection | ◯ | |
| smartobject | ◯ | |
| timeline | ◯ | |
| weblinks | ◯ | |
| webmap3 | ◯ | |
| webphoto | ◯ | |
| whatsnew | ◯*2 | |
| ぺージ情報 | |
|---|---|
| ぺージ名 : | nao-pon/blog/2013-09-09 |
| ページ別名 : | 未設定 |
| ページオーナー : | nao-pon |
| 閲覧可 | |
| グループ : | すべての訪問者 |
| ユーザー : | すべての訪問者 |
| 編集可 | |
| グループ : | なし |
| ユーザー : | ゲスト |