Deprecated [非推奨] functionの対策
2014/07/08
サーバーのPHPを、5.3.x 等にバージョンを上げたら、スクリプトが動かなくなった、動くようにしてほしい、などの依頼がまれにある。よくみると、
Deprecated: Function xxxx() is deprecated
等のWarningが吐き出されているため、以降の日本語が文字化けしており、「壊れている」ようにみえる。実際、壊れているのに等しいのだが、PHPはとくに問題なく動いている。
その原因は、あるバージョンから「非推奨」になった一部の function を使っていますよ、というレベルの高くない警告なのだ。
参照:PHP公式 http://jp2.php.net/manual/ja/migration53.deprecated.php根本的な対処としては、「推奨」される function に置き換えていけばよいのだが、即効の応急措置として、エラーメッセージを表示させない、という対処もある。通常のレンタル共有サーバーでは、
php.ini の場合
display_errors = Offあるいは
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
.htaccess の場合
php_value display_errors Off
あるいは
php_value "error_reporting" "E_ALL & ~E_NOTICE & ~E_DEPRECATED"
と設定する。
どうも、今後の、php 6 では、ereg_replace(), preg_match() といった、ごく普通に使っていた関数も deprecated となるようで、ちょっと面倒くさいことになりそう。開発が終わったら、とりあえず、エラーは切っておいたほうがよいということだろうか。