2024年5月23日木曜日

PHPのDeprecatedエラー表示を消す方法

こんばんは、こうちゃんです。

筆者は普段は仕事でプログラミング言語のPHPを用いておりますため、今回はそのPHP関連技術情報をひとつ。

PHPでプログラミングをしていますと、やや昔に作ったシステムを、最新のPHPバージョンが適用されているサーバーに乗せ換えて動かすこともよくあります。

このような場合に、PHPの古いバージョンでは使えていた関数等で、今後廃止になる予定や、非推奨のものの場合、動かすと、
画面に、

Deprecatedエラー
※意味は非推奨の関数が使われています的なもの

が出てしまうことがあります(もちろんエラー表示の設定次第ですが)。

この非推奨エラーは、どうしてもPHPの仕様で、今後の警告のために設定されているものですので仕方ありませんが、
これが画面に出てしまう場合、色々と具合が悪いものです。
自分で使うシステムでも、他者が見るものや、一般ユーザーが見るものでも。

こうした場合は、サーバーのphp関連で設定に干渉できる場所を使って、画面に出てしまわないようにしましょう。
※もちろん直せるのであれば、これを機に、将来のために推奨のロジックに直せれば一番ですが、そう都合よくもいかないでしょうし

方法としてはいくつかありまして、

1.php.iniに書く場合
php.iniではそのサーバー上で動く全部のPHPの設定の基になる部分ですので、
ここをいじれるのであれば、今後のためにもそれが一番です。
error_reporting設定のところを探し

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

というように、Deprecatedエラーを非表示にします。

2.PHPソースに書く場合
レンタルサーバーなどでphp.iniを編集はできない場合で、そのPHP動作ファイルでだけ起きるような場合には、もういっそ、そのPHPファイルの文頭で宣言してしまい、そのファイルでエラー表示されないようにしてしまうのも手です。
<?php タグで記載している部分に

error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);

と記載します。

3.httpd.confや.htaccessに書く場合
php.iniは操作できないものの、そのサーバー上で動く多くのPHPファイルでエラーが出てしまい、一括で直したい場合は、
もしもapacheの設定ファイルがいじれるのならば、httpd.confに
php.ini同様、httpd.confもいじれないなら(レンサバは多い)、
.htaccessに

php_value "error_reporting" "E_ALL & ~E_NOTICE & ~E_DEPRECATED"

を記載します。

これらのいずれかの方法で、今後の、Deprecatedエラー表示は抑制できます。
長く使うつもりのシステムの場合、最初からある程度こうした事態を見越して対策を入れておくのもよいのではと思われます。

なお、.htaccessやphpファイル文中に記載して設定した場合は即時反映されますが、
php.iniやhttpd.confを変更したときにはApache(webサーバ)の再起動が必要です。注意してください。


本日もこちらの方ご覧になっていただきましてありがとうございました。
またの機会にもよろしくお願いいたします。

こうちゃん