【WordPress・詳細解説】ブラウザにエラー内容を表示する方法(WP_DEBUGの使い方&Dockerでの設定方法)。エラー対処法:このサイトで重大なエラーが発生しました。

WordPress
記事内に広告が含まれていることがあります。

wordpressでphpファイルを編集しているときにコードにエラーがあると、サイトに「このサイトで重大なエラーが発生しました。WordPress のトラブルシューティングについてはこちらをご覧ください。」という画面が表示される。

リンクをクリックすると公式ページのFAQに飛ばされてしまう。。これではどこでどんなエラーが発生しているのかわからないため、画面上にエラーの発生箇所を表示し、デバッグできるようにする方法について。

デバッグモードをONにする

デバッグモードをONにするのはとても簡単。プロジェクトディレクトリの直下にあるwordpressの設定ファイル wp-config.php を開きます。

WP_DEBUG」で検索すると以下のような表示にたどりつきます。

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 *
 * For information on other constants that can be used for debugging,
 * visit the documentation.
 *
 * @link https://wordpress.org/support/article/debugging-in-wordpress/
 */
define( 'WP_DEBUG', '') );
/**
* 開発者へ: WordPress デバッグモード
*
* この値を true にすると、開発中に注意 (notice) を表示します。
* テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
*/
define('WP_DEBUG', false);

WordPressのデバッグモードの設定でデフォルトはfalse(または空欄)になっています。開発モードの場合はこれをtrueにしデバッグモードを有効にすることを推奨するという内容。

define( 'WP_DEBUG', 'true') );

ctrl + s でセーブしてからブラウザをリロードすると、画面にどのファイルでどんなエラーが発生しているかが表示されます。

便利!!

Dockerで起動時にデバッグモードを有効化する方法

Dockerのコンテナ上でWordpressを起動している場合は、デバッグモードを有効化する方法は2つあります。

wp-config.phpの設定

Dockerを使っている場合wp-config.phpの内容が若干ことなります。「WP_DEBUG」で検索すると以下が引っかかるので、

define( 'WP_DEBUG', !!getenv_docker('WORDPRESS_DEBUG', '') );

!!getenv_docker(‘WORDPRESS_DEBUG’, ”)の第2引数をtrueにします

define( 'WP_DEBUG', !!getenv_docker('WORDPRESS_DEBUG', 'true') );


この場合、コンテナを再起動すると、デフォルトの設定に戻ります。

デバッグモードの常時有効化(コンテナ起動時に環境変数を渡す)

コンテナ起動時に環境変数を渡すことでデバッグモードを常に有効化することができます。

docker-compose.ymlの場合、environmentにWORDPRESS_DEBUG : 1を追記し再起動すればOKです。

wp-config.phpの中がgetenv_docker(‘WORDPRESS_DEBUG’, ‘true’)になります。

  wordpress:
    image: wordpress:latest
    container_name: my_wordpress
    restart: always
    depends_on:
     - db
    ports:
     - "10091:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: root
      WORDPRESS_DB_NAME: wp_db
      WORDPRESS_DEBUG : 1 #追記。デバッグモードON
    volumes:
       - ./html:/var/www/html

!!getenv_dockerとは?

設定ファイルで使われている getenv_docker() は指定したDockerの環境変数の値を取得する関数です。

getenv_docker(‘dockerの環境変数名’, ‘環境変数の値’)

冒頭に「!!」をつけると値が存在するならtrue、存在しないならfalseになります。「!」ひとつだとその後ろに続く要素がtrue(または存在する)ならfalseに、逆にfalseだったらtrueに変換します。そこに更に「!」を加えた状態です。

豆知識

(1) WORDPRESS_DEBUGが取れる値は数値か文字列で、trueやfalseを指定することはできません。エラーが発生します。

ERROR: The Compose file '.\docker-compose.yml' is invalid because:
services.wordpress.environment.WORDPRESS_DEBUG contains true, which is an invalid type, it should be a string, number, or a null

(2) 1の意味

1はtureを表します。0にするとfalseになります。

(3) WORDPRESS_DEBUG=1とWORDPRESS_DEBUG : 1の違い

環境変数の値指定するときに「:」の他に「=」も使えます。これはヤムル(yaml)ファイルの記述ルールがどちらもサポートしているからです。

タイトルとURLをコピーしました