ページへ戻る

− Links

 印刷 

XOOPS モジュールの PHP 5.4 と MySQLi 対応の進捗状況 :: XOOPS マニア

UsersWiki:nao-pon/blog/2013-09-09


RSS of nao-pon/blog[5]
2013 9月 9 (月)
 

XOOPS[6] モジュールの PHP 5.4 と MySQLi 対応の進捗状況 anchor.png[7]

Tag: XOOPS[8] プログラミング[9]

私が開発に関わっているモジュールの PHP 5.4 と MySQLi 対応の進捗状況のまとめページ

PHP 5.4 対応 (UTF-8 環境下では問題になることは少ないです)

PHP 5.4 から htmlspecialchars() 関数の第三引数(文字エンコーディング)のデフォルト値が ISO-8869-1 から UTF-8 に変更になったとともに、文字エンコーディングとして不正なバイト列がある場合は空文字を返すようになりました。

UTF-8 環境下では問題になるケースは少ないですが、それ以外(EUC-JPなど)の環境下では、コンテンツが部分的に表示されなくなるなどの深刻な問題が生じます。

その対策として、第三引数を明示的に指定する必要があります。

MySQLi 対応(対応してなくても当面は問題ありません)

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
    static $link = null;
    if (is_null($link)) {
      $db = XoopsDatabaseFactory::getDatabaseConnection();
      $link = (is_object($db->conn) && get_class($db->conn) === 'mysqli')? $db->conn : false;
    }
    if ($link) {
      return mysqli_set_charset($link, $charset);
    } else {
      return mysql_set_charset($charset);
    }
Page Top

対策済み進捗状況表 anchor.png[11]

モジュール名PHP5.4MySQLi
当該コミット*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


*1 リンクのない ◯ は対応済みで修正の必要はないことを意味しています。
*2 pukiwiki プラグインは動かない(そもそも PukiWikiMod が動かない)

Last-modified: 2014-02-12 (水) 22:31:55 (JST) (4465d) by nao-pon