次のコードを実行すると、
<?php
function orearesoredorekoremore($n)
{
if ($n > 0) {
orearesoredorekoremore($n - 1);
} else {
throw new Exception("oops!");
}
}
orearesoredorekoremore(50);
次のようにエラーが表示されます。
$ php z.php
Fatal error: Uncaught exception 'Exception' with message 'oops!' in /tmp/z.php:7
Stack trace:
# 0 /tmp/z.php(5): orearesoredorekoremore(0)
# 1 /tmp/z.php(5): orearesoredorekoremore(1)
# 2 /tmp/z.php(5): orearesoredorekoremore(2)
# 3 /tmp/z.php(5): orearesoredorekoremore(3)
# 4 /tmp/z.php(5): orearesoredorekoremore(4)
# 5 /tmp/z.php(5): orearesoredorekoremore(5)
# 6 /tmp/z.php(5): orearesoredorekoremore(6)
# 7 /tmp/z.php(5): orearesoredorekoremore(7)
# 8 /tmp/z.php(5): orearesoredorekoremore(8)
# 9 /tmp/z.php(5): orearesoredorekoremore(9)
# 10 /tmp/z.php(5): orearesoredorekoremore(10)
# 11 /tmp/z.php(5): orearesoredorekoremore(11)
# 12 /tmp/z.php(5): orearesoredorekoremore(12)
# 13 /tmp/z.php(5): orearesoredorekoremore(13)
# 14 /tmp/z.php(5): orearesoredorekoremore(14)
# 15 /tmp/z.php(5): orearesoredorekoremore(15)
# 16 /tmp/z.php(5): orearesoredorekoremore(16)
# 17 /tmp/z.php(5): orearesoredorekoremore(17)
# 18 /tmp/z.php(5): orearesoredorekoremore(18)
# 19 /tmp/z.php(5): orearesoredorekoremore(19)
# 20 /tmp/z.php(5): orearesoredorekoremore(2 in /tmp/z.php on line 7
#20 /tmp/z.php(5): orearesoredorekoremore(2 in /tmp/z.php on line 7
の辺りがおかしいですが、これは log_errors_max_len
の制限に掛かっているためです。
log_errors_max_len
のデフォルトは 1024 です。
$ php -i | grep log_errors_max_len
log_errors_max_len => 1024 => 1024
下記の部分が丁度 1024 バイトになっています。
Uncaught exception 'Exception' with message 'oops!' in /tmp/z.php:7
Stack trace:
# 0 /tmp/z.php(5): orearesoredorekoremore(0)
# 1 /tmp/z.php(5): orearesoredorekoremore(1)
# 2 /tmp/z.php(5): orearesoredorekoremore(2)
# 3 /tmp/z.php(5): orearesoredorekoremore(3)
# 4 /tmp/z.php(5): orearesoredorekoremore(4)
# 5 /tmp/z.php(5): orearesoredorekoremore(5)
# 6 /tmp/z.php(5): orearesoredorekoremore(6)
# 7 /tmp/z.php(5): orearesoredorekoremore(7)
# 8 /tmp/z.php(5): orearesoredorekoremore(8)
# 9 /tmp/z.php(5): orearesoredorekoremore(9)
# 10 /tmp/z.php(5): orearesoredorekoremore(10)
# 11 /tmp/z.php(5): orearesoredorekoremore(11)
# 12 /tmp/z.php(5): orearesoredorekoremore(12)
# 13 /tmp/z.php(5): orearesoredorekoremore(13)
# 14 /tmp/z.php(5): orearesoredorekoremore(14)
# 15 /tmp/z.php(5): orearesoredorekoremore(15)
# 16 /tmp/z.php(5): orearesoredorekoremore(16)
# 17 /tmp/z.php(5): orearesoredorekoremore(17)
# 18 /tmp/z.php(5): orearesoredorekoremore(18)
# 19 /tmp/z.php(5): orearesoredorekoremore(19)
# 20 /tmp/z.php(5): orearesoredorekoremore(2
log_errors_max_len=0
を指定すれば無制限になるので、最後まですべて表示されます。
$ php -d log_errors_max_len=0 z.php
Fatal error: Uncaught exception 'Exception' with message 'oops!' in /tmp/z.php:7
Stack trace:
# 0 /tmp/z.php(5): orearesoredorekoremore(0)
# 1 /tmp/z.php(5): orearesoredorekoremore(1)
# 2 /tmp/z.php(5): orearesoredorekoremore(2)
:
# 98 /tmp/z.php(5): orearesoredorekoremore(98)
# 99 /tmp/z.php(5): orearesoredorekoremore(99)
# 100 /tmp/z.php(11): orearesoredorekoremore(100)
# 101 {main}
thrown in /tmp/z.php on line 7