PHP のエラーを画面に出さない設定|display_errors と log_errors
本番のサイトで PHP のエラーを画面に出すと、サーバーの情報が外に漏れる。display_errors と log_errors の設定のしかたをまとめた。
PHP のエラーが画面に出ていると、ファイルの場所やデータベースの情報など、攻撃の手がかりを外に見せてしまう。本番ではエラーを画面に出さず、ログに残す。
この記事の要点
- 本番は
display_errors = Off、log_errors = On - 開発やテストの環境では、エラーをすべて出して確かめる
- エラーを隠しても、PHP2Shell の対策にはならない(php.net も明記)
- WordPress は
WP_DEBUG_DISPLAYで画面に出さない設定にする
本番と開発の設定
| 設定 | 本番 | 開発・テスト |
|---|---|---|
display_errors | Off | On |
log_errors | On | On |
error_reporting | E_ALL | E_ALL |
expose_php | Off(版を外に出さない) | どちらでも |
設定する場所
- php.ini(サーバー全体)
- レンタルサーバーなら、管理画面の php.ini の設定
- PHP-FPM ならプールの設定(
php_admin_flag[display_errors] = off)
エラーを隠しても PHP2Shell は防げない
php.net は、PHP2Shell の応急処置について「エラーを隠す(error_reporting・display_errors・@)だけでは効かない」と明記している。修正版への更新が必要。
WordPress の場合
wp-config.phpでWP_DEBUG_DISPLAYを false にする- 調べるときだけ
WP_DEBUG_LOGを true にして、wp-content/debug.logに出す - 調べ終わったら debug.log を消す(外から読まれることがある)
よくある質問
エラーを画面に出さないと、不具合に気づけませんか?
ログに残せば気づけます。log_errors を On にして、エラーログを定期的に確かめてください。
レンタルサーバーで php.ini を変えられません
多くのレンタルサーバーには、管理画面に php.ini の設定があります。
見つからなければ、サーバー会社に問い合わせてください。
参考にした情報
- php.net(2026年10月21日のセキュリティ告知)
- php.net:Supported Versions
- php.net:Unsupported Branches
- php.net:付録(移行ガイド)
- php.net:実行時設定(エラー処理)
この記事の情報
2026年10月22日時点の公開情報にもとづく。画面や手順は変わることがあるので、最新は各社の公式のマニュアルを確認すること。
URL を入れるだけで、PHP2Shell の危険度と今やることが分かる。移行の相談もできる。
無料で診断する


