PHPエラーを画面に表示する方法
静的サイトにPHPメールフォームを組み込んでアクセスしたら、「このページは動作していません」と表示されてしまう…そんなケースがたまにありますよね。
PHPエラーの確認はレンタルサーバーのコンパネ(コントロールパネル・管理画面)からphp.iniで設定したり、ログ機能から確認できたりすると思います。
しかし、これらはコンパネへのログイン情報を持っている時のみ可能な方法。
案件によってFTP情報だけしかもらっていないというケースもあると思います。
今回はそんな時にエラーメッセージを表示させる方法について。毎回忘れてしまうので備忘録として残しておきます。
Contents
コード
概要としては、新しいPHPファイルを作成して、エラー出力設定をした後確認対象ファイルを読み込みます。
そうすることで、確認対象ファイル内でエラー(表示時や、何か処理した際など)が起きた場合、画面上にそのメッセージが表示されるようになります。
- デバッグをしたいPHPファイルを「form.php」とした場合、check.phpを用意し下記を記述する
<?php ini_set('error_reporting', E_ALL); ini_set("display_errors", 1); require_once("form.php");//エラーが発生するファイル ?>
- check.phpをアップロードし、check.phpにアクセスしてphpの検証を行う
- さくら、ロリポップのレンタルサーバーで実践済み
-
前提として、form・checkのphpファイルが、レンタルサーバー指定のパーミッション(※)になっているか確認すること
指定のパーミッション以外の場合、そもそも閲覧できないためデバッグも行えないので注意(※)参考)2022/11/29時点
- さくらのphpパーミッション:ファイル・ディレクトリパーミッション: 755 または 705 のいずれか
- ロリポップのphpパーミッション:配布元の指示に従うこと。CGIが動かない時は、phpが604であることを確認する
CGI・SSI・PHP・SENDMAILについて / サーバー・プログラム / マニュアル – ロリポップ!レンタルサーバー
おまけ:WordPressの場合
WordPress関連のお仕事を請け負うので、こちらはよく使います。
以下のコードをwp-config.phpに記述することでエラー・通知・警告すべてのメッセージが wp-content/debug.log に出力されます。
// WP_DEBUG モードを有効化
define( 'WP_DEBUG', true );
// /wp-content/debug.log ファイルへのデバッグログの出力を有効化
define( 'WP_DEBUG_LOG', true );
// エラーと警告の画面への表示を無効化
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
使う際の注意
どちらも重々気をつけたいところが、エラーメッセージの表示設定ON状態で放置するのはセキュリティ的によろしくないので、一時的なデバック方法として使うこと。
wp-config.phpの設定ファイルを作業の度に戻すのは神経を使いますが、WordPressのサイトヘルス画面にも注意点として出てきます。
デバッグが終わったらちゃんと戻そう!