1. TOPTOP
  2. Webサービス
  3. PHP

PHPでエラーが表示されない時はdisplay_errorsの値を”On”にする

|

PHP

さて。
以前、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に。

error_reporting

2.display_errorsの値をOnにする

デフォルトでは”Off”になっていたので”On”に変更。

display_errors

3.Apacheの再起動

$sudo service httpd restartをお忘れなく!

なおphpinfo関数でチェックするとdisplay_errorsが
“On”になっていることが分かります。

phpinfo

【参考サイト】