PHPの学習をしていると「ini_set(‘display_errors’, 1)」っていう記述が出てきたのでぐぐってみました。
結論
「エラーを表示する」設定ということでした。1を0にするとエラーを表示しないとのこと。わざとエラーの状態を作って実験をしてみることにしました。
■php.iniの設定は、
display_errors = On error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
の、状態です。
実験1
<?php echo test; ?>
文字列をクォーテーションで囲まなかった場合
【ini_set(‘display_errors’, 1)を指定して実行】
Notice: Use of undefined constant test - assumed 'test' in … test
Noticeのエラーが表示されました。
【ini_set(‘display_errors’, 0)を指定して実行】
test
エラーは表示されません。
【何もせずに実行】
test
php.iniの設定により、Noticeは表示されません。
実験2
<?php $text = "https://web-dev.xyz"; $text = ereg_replace("http://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\" target='_blank'>\\0</a>", $text); echo $text; ?>
PHP5.3以降で非推奨になった「ereg_replace」と正規表現を使用したURLのリンク化
【ini_set(‘display_errors’, 1)を指定して実行】
https://web-dev.xyz
あ・・れ・・?
Deprecated: … が表示されると思ったら表示されませんでした。
Noticeは「ini_set(‘display_errors’, 1)」によって表示されますが、Deprecatedはphp.iniによって表示されない…?
試しにphp.iniの設定を
display_errors = On error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
に変更したところ、
Deprecated: Function ereg_replace() is deprecated in … https://web-dev.xyz
Deprecatedのエラーが表示されました。Deprecatedは「ini_set(‘display_errors’, 1)」よりphp.iniの設定が優先されるようです。
【ini_set(‘display_errors’, 0)を指定して実行】
https://web-dev.xyz
エラーは表示されません。
こちらもphp.iniの設定を
display_errors = On error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
に変更してみたところ、
https://web-dev.xyz
エラーは表示されませんでした。今回はphp.iniの設定より「ini_set(‘display_errors’, 0)」が優先されました。
【何もせずに実行】
https://web-dev.xyz
php.iniの設定により、Deprecatedは表示されません。
最後に・・・
E_STRICTのエラーは作るのが面倒なので割愛します。
以上、「ini_set(‘display_errors’, 1)」に関する実験でした。