PHPスクリプトを実行したらページが真っ白で途方に暮れているそこのあなた。私が助けてあげましょう(偉そう)。
なぜ真っ白なのかというと、エラーが発生しているのにエラーメッセージが表示されないからなのです。エラーメッセージを表示する方法を私が教えてあげます(偉そう)。
何者か別、エラー表示方法
エラーの表示方法は3つあって、あなたが何者なのかによってどれを使うかが決まります。
何者 | 設定方法 |
---|---|
サーバの管理者 | サーバの初期設定ファイルphp.ini で設定します |
レンタルサーバの利用者 | レンタルサーバ会社によって設定方法が違いますphp.ini を使う.user.ini を使う.htaccess を使うコントロールパネルを使う |
コードを書く人 | PHPのコードに直接書き込みます |
無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。
サーバ管理者の設定方法
サーバ管理者が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の定数が使えないためです。32767
はE_ALL
と同等です。
レンタルサーバでは通常、PHPのエラー表示設定はOff
になっています。これは本番環境として提供されているからであり、本番環境ではエラーを表示するべきではないからです。
エラーメッセージにはセキュリティ上のリスクになり得る情報が表示されることがあります。エラー表示をOn
にしたままウェブサイトを運用しないようご注意ください。
プログラマの設定方法
PHPコードの中に設定を書き込む方法です。
<?php
//エラー表示設定
ini_set('display_errors', 'On');
//エラー出力レベル設定
ini_set('error_reporting', E_ALL);
//エラー出力レベル設定の別の書き方
error_reporting(E_ALL);
この方法で設定すると、スクリプトが致命的なエラーを発生した場合にはエラーメッセージが表示されません。エラー表示設定が反映される前にスクリプトが終了してしまうからですね。ご注意ください。
でわでわ
無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。
コメント