仕事で使っているサーバーで、PHP5.3.2へバージョンアップ作業をしました。
もちろん、FreeBSDですのでportsからです。
すると、Xoopsを使っているサイトだけが大量のエラーを表示して、サイトを表示してくれなくなりました。
Deprecated: Assigning the return value of new by reference is deprecated in (以下略)
というメッセージです。
ググってみましたら、Xoopsのコーディング手法に問題があるようなことを見かけました。その方法が5.3系になって非推奨となったということですが、5系から6系とメジャーバージョンアップした場合ならいざしらず、5.2系から5.3系とマイナーバージョンアップした程度で、非推奨だからと動作拒否をし、下位互換性を失わせるというのもいかがなものかと思います。
php.ini で、互換性を維持させる設定をできるようにすべきでしょう。
PHP 5.2系の最新をマニュアルでインストールしようかと思ったのですが、それをするとportsauditでセキュリティホール管理ができません。
仕方がないので、FreeBSDのportsコレクションを、PHP 5.3.2が導入される前の日付に戻して、csup でportsツリーを再構築しました。
lang/php5 他、make config でコンパイルオプションをチェックしてから、portinstall しました。
無事に復旧できましたが、面倒臭かった… orz
今回は、Xoopsが悪いというよりは、PHPが傲慢だったと言わざるをえないと思います。コーディング方法をとやかく言う以前に、配慮不足を指摘すべきと思います。