PHPでエラーが表示されない時はdisplay_errorsの値を”On”にする
目次
さて。
以前、mb_check_encoding関数の機能を有効にさせるためには?(PHP)
という記事を書きました。PHP5.3をインストールした直後のことで、
何かと設定のことをくちゃくちゃといじっていた時のことです。
今回の記事も、設定がらみで困って解決したことです。
問題の内容
コードにエラーがあるのに、
画面が真っ白になって何も表示されない。
問題の補足
<?php class User { public $name; private $email; public function __construct($name, $email) { $this->name = $name; $this->email = $email; } public function sayHi() { echo "Hi my name is ".$this->name; } } $ichiro = new User("ichiro", "ichiro@dummy.com"); $maakun = new User("maakun", "maakun@dummy.com"); echo $ichiro->email."<br/><br/>"; echo $maakun->email."<br/><br/>"; echo $ichiro->sayHi()."<br/><br/>"; echo $maakun->sayHi()."<br/><br/>"; ?>
このコードは本来、
Fatal error: Cannot access private property User::$email in /var/www/html/index2.php on line 19
というエラーが表示されるはずです。
(4行目の$emailというメンバ変数のアクセス修飾子がprivateとなっていて、
クラスの外からはアクセスできないため)
問題の解決方法
1.error_reportingを設定する
私の場合error_reporting = E_ALL | E_STRICTに。
2.display_errorsの値をOnにする
デフォルトでは”Off”になっていたので”On”に変更。
3.Apacheの再起動
$sudo service httpd restartをお忘れなく!
なおphpinfo関数でチェックするとdisplay_errorsが
“On”になっていることが分かります。
【参考サイト】