【PHP入門】エラーを表示する方法 ページが真っ白!?

PHPでエラーを表示する方法

PHPスクリプトを実行したらページが真っ白で途方に暮れているそこのあなた。私が助けてあげましょう(偉そう)。

なぜ真っ白なのかというと、エラーが発生しているのにエラーメッセージが表示されないからなのです。エラーメッセージを表示する方法を私が教えてあげます(偉そう)。

目次

何者か別、エラー表示方法

エラーの表示方法は3つあって、あなたが何者なのかによってどれを使うかが決まります。

何者設定方法
サーバの管理者サーバの初期設定ファイルphp.iniで設定します
レンタルサーバの利用者レンタルサーバ会社によって設定方法が違います
php.iniを使う
.user.iniを使う
.htaccessを使う
コントロールパネルを使う
コードを書く人PHPのコードに直接書き込みます

サーバ管理者の設定方法

サーバ管理者がPHPでエラーを表示したい場合は、PHPのグローバル設定ファイルphp.iniに次のように設定します。

display_errors = On
;または
display_errors = 1

ちなみに、エラーを表示しない設定は次のとおりです。

display_errors = Off
;または
display_errors = 0

On,Offは大文字小文字を区別しないので、ONでもonでもOKです。oNでもOKですが、そういうことする人、私は苦手です。

ついでに、エラー出力レベルの設定もしましょう。

;すべてのエラーを表示する場合
error_reporting = E_ALL
;E_NOTICE以外のエラーを表示する場合
error_reporting = E_ALL & ~E_NOTICE
;E_NOTICEとE_DEPRECATED以外のエラーを表示する場合
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
  • PHP 8.0 以降の初期値はerror_reporting = E_ALLです。
  • E_NOTICEは重要度の低い警告を表す定数です。この警告を放置してもスクリプトは動作します。
  • E_DEPRECATEDは非推奨だったり将来廃止される文法や関数を使用していることを表す警告です。

設定を反映させるために、Apacheモジュール版のPHPを使っているならば、Apacheを再起動する必要があります。FastCGI版のPHPを使っているならば、php-fpmを再起動する必要があります。これ重要です。テストに出ます。

php.ini ファイルの場所を調べる方法

php.iniファイルの場所がわからない場合はコマンドphp --iniを実行します。

% php --ini
Configuration File (php.ini) Path: /opt/homebrew/etc/php/8.1
Loaded Configuration File:         /opt/homebrew/etc/php/8.1/php.ini
Scan for additional .ini files in: /opt/homebrew/etc/php/8.1/conf.d
Additional .ini files parsed:      /opt/homebrew/etc/php/8.1/conf.d/ext-opcache.ini

レンタルサーバ利用者の設定方法

レンタルサーバによって設定方法が違うので、ご利用のレンタルサーバ会社に確認してください。

php.ini または .user.ini で設定する方法

php.ini.user.iniの記法は同じです。

;エラー表示設定
display_errors = On
;または
display_errors = 1

;エラー出力レベル設定
error_reporting = E_ALL

設定が反映されるまで数分かかる場合があります。

.htaccess で設定する方法

Apacheモジュール版のPHPは.htaccessファイルで設定します。

#エラー表示設定
php_flag display_errors On
#エラー出力レベル設定
php_value error_reporting 32767

エラー出力レベルは数値で設定します。.htaccessファイル内ではE_ALL等のPHPの定数が使えないためです。32767E_ALLと同等です。

レンタルサーバでは通常、PHPのエラー表示設定はOffになっています。これは本番環境として提供されているからであり、本番環境ではエラーを表示するべきではないからです。
エラーメッセージにはセキュリティ上のリスクになり得る情報が表示されることがあります。エラー表示をOnにしたままウェブサイトを運用しないようご注意ください。

プログラマの設定方法

PHPコードの中に設定を書き込む方法です。

<?php
//エラー表示設定
ini_set('display_errors', 'On');
//エラー出力レベル設定
ini_set('error_reporting', E_ALL);
//エラー出力レベル設定の別の書き方
error_reporting(E_ALL);

この方法で設定すると、スクリプトが致命的なエラーを発生した場合にはエラーメッセージが表示されません。設定が反映される前にスクリプトが終了してしまうからですね。ご注意ください。

でわでわ

PHPでエラーを表示する方法

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次