2024年5月23日木曜日

Deprecatedエラーを消す方法

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

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サーバ)の再起動が必要です。注意してください。

こうちゃん