さて。
以前、mb_check_encoding関数の機能を有効にさせるためには?(PHP)
という記事を書きました。PHP5.3をインストールした直後のことで、
何かと設定のことをくちゃくちゃといじっていた時のことです。
今回の記事も、設定がらみで困って解決したことです。
問題の内容
コードにエラーがあるのに、
画面が真っ白になって何も表示されない。
問題の補足
[php]
<?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/>";
?>
[/php]
このコードは本来、
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”になっていることが分かります。
【参考サイト】