PHP 5.5 で mysql 拡張モジュールが非推奨になり、将来において WordPress を筆頭にさまざまな CMS のアップグレード作業が必要になります

PHP 5.5 で mysql 拡張モジュールが非推奨になり、E_DEPRECATED エラーが表示されるようになりました。将来の PHP のバージョンで削除されます。 mysql 拡張モジュールに依存する CMS を使ってサイトを運用している場合、将来、運用サーバーに導入されている PHP のバージョンの切り替えに備えて、 mysqli もしくは PDO に対応した CMS のバージョンへのアップグレードするか、別の CMS やウェブサービスに切り替える必要があります。

多くの PHP 製の CMS が共有ホスティングにインストールされており、共有ホスティングは比較的古い PHP のバージョンのサポートを続ける傾向にありますが、古い PHP のバージョンを使い続ける場合、PHP のバグやセキュリティの未対応、より新しい PHP のバージョンを最小バージョンとするライブラリや CMS を導入できない制約に悩むことになります。また、いずれ、共有ホスティングが古い PHP のバージョンのサポートを打ち切ったときにサイトが表示されなくなるリスクを抱えることになります。

mysql 拡張モジュールが非推奨になった理由は改善されたセキュリティ機能や MySQL 5.1 以降に導入された機能が利用できないことと、コードのメンテナンスがむずかしいためです。くわしい説明は RFC に書かれています。

教育機関や非営利組織のサイトを調べると、運営者の知識や財源の基盤、人脈などがないため、CMS の古いバージョンのまま放置しているところがかなり見られるので、サイトの改善を含めて、CMS のアップグレード作業を支援してくれる人を募集できるしくみが必要です。時間単位で個人のサービスを売り買いできるクラウドソーシングや、東日本大震災を契機に注目を集めるようになったソーシャルサービスを組み合わせたボランティア募集サイトの活用が解決策として期待されます。

主要な CMS の対応状況を挙げます。

まずは CMS シェアトップ3の WordPress、Joomla、Drupal の対応状況です。

WordPress の開発チームは PDO への移行を検討しています(Use PDO for MySQL queries when PDO is available)。3.6 での対応を見送りましたが、今年中に対応を検討するという見解が示されています。

Joomla、Drupal は PDO に対応していますので、比較的新しいバージョンであればアップグレードする必要はありません。

日本国内においては一定規模のシェアをもつ XOOPS Cube の動向を注目しています。ゼロ年代前半において無数の書籍が出版され、全国の子ども劇場など NPO サイトでさまざまな導入事例が存在する一方で、ゼロ年代後半から開発の停滞が言われるようになり、2010年代に書かれた記事が少ないからです。記事の執筆時点では mysqli、PDO の両方とも対応しておらず、今のところ、その動きも見られません。XOOPS Cube のフォーク元の XOOPS および XOOPS からフォークした ImressCMS は PDO もしくは抽象化レイヤーの ADODB を導入することによる対応を検討しています。

MySQL 拡張モジュールへの消極的な対応を書きましたが、次に積極的な対応を行う理由について書きます。

mysql 拡張モジュールから mysqli、PDO に切り替える利点に関しては PHP 公式マニュアルの 「どの API を使うか」で説明されています。

マニュアルに追記が必要なことは Unicode 6系 への対応です。Unicode 6系への対応は MySQL にかぎらず、OS やプログラミング言語の問題でもあり、社会的な問題です。基本多言語面外の JIS 第3・第4水準漢字は法律で制定されているにも関わらず、OS の実装の制限で多くの人が利用できない状況が続いてきました。

Unicode 6 系の対応に関して Mac OSX、および iOS が先行していましたが、この1・2年のあいだに Android 4.0、Windows 8 も対応しました。PHP に関して、PHP 5.4 において mbstring 拡張モジュールが対応しました。

話を MySQL に戻します。MySQL 5.1 までは絵文字や基本多言語面外の JIS 第3・第4水準漢字を扱う場合、バイナリ型を指定する必要がありましたが、MySQL 5.5 で utf8mb4 のデータ型が追加され、扱いやすくなりました。mb4 はバイト数が4であるマルチバイト文字のことを意味します。現時点ではオープンソースとして配布されている PHP 製の CMS の多くは utf8mb4 を利用していないので、自前でテーブルの定義を書き換える必要があります。より多くの人が4バイト文字を使えるようにするには CMS の開発者に utf8mb4 を利用するように働きかける必要があります。