1KがPHPでブラウザにエラーを表示するには低すぎます。
[更新]
PHPは、ブラウザにエラーメッセージが表示されるエラーハンドラをトリガすることができるようにするために十分なメモリを持っている必要があります。この場合、ブラウザにメッセージを出力しようとしたときにPHPが十分なメモリを持っておらず、ただ停止しました。
必要なメモリ量は、読み込まれた拡張機能、サーバー環境、およびその他のphp.ini設定によって異なります。
たとえば、メモリ不足エラーが1 MBの割り当てでトリガされた場合、エラーメッセージをブラウザに表示するには1.5 MBが必要です。参照:Tracking Memory Usage in PHP
デモ:http://ideone.com/VmPO0w
<?php
// error.php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$x = str_repeat(' ', 1024 * 1024); //store 1 MB to a string
ini_set('memory_limit', '1535K'); //minimum of 1536K (1.5 MB) needed to display error
while (true) {
echo 'not real: ' . (memory_get_peak_usage(false)/1024/1024) . " MB\n";
echo 'real: ' . (memory_get_peak_usage(true)/1024/1024) . " MB\n\n";
$x .= str_repeat(' ', 1024 * 500); //store 500K more to string
}
コマンドラインの使用結果:$>php error.php
not real: 1.2208786010742 MB
real: 1.5 MB
Fatal error: Allowed memory size of 1571840 bytes exhausted (tried to allocate 512001 bytes) in error.php on line 10
ブラウザにロードされたときが、結果は空白のページになります。
Windows環境php 5.6 x64 NTS +組み込みWebサーバー。少なくとも256K
を使用してください。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo $error->abc; // should give error
// E_ERROR - run out of memory
ini_set('memory_limit', '256K'); //tested with 255K - blank page
var_dump((object) range(0, 100000));
(!) Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 32 bytes) in ...
Linux環境のPHP 5.6のx64 NTS + PHP-FPM + ApacheのFCGI。少なくとも512K
を使用してください。 PHPが実行されているどのようなモード
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo $error->abc; // should give error
// E_ERROR - run out of memory
ini_set('memory_limit', '512K'); //test with 511K - blank page
var_dump((object) range(0, 100000));
(!) Fatal error: Allowed memory size of 524288 bytes exhausted (tried to allocate 32 bytes) in ...
? apache/mod_phpまたはfpm? – mkaatman
Apacheモードで実行中 サーバAPI:\t Apache 2.0ハンドラ –