Есть в PHP крайне полезная функция register_shutdown_function(), которая поможет разобраться с ошибками. Но не забывайте, что сообщения об ошибках должны видеть только вы, а не все подряд при заходе на сайт. Вот пример:
<?
register_shutdown_function( "fatal_handler" );
function fatal_handler() {
$errfile = "unknown file";
$errstr = "shutdown";
$errno = E_CORE_ERROR;
$errline = 0;
$error = error_get_last();
if( $error !== NULL) {
$errno = $error["type"];
$errfile = $error["file"];
$errline = $error["line"];
$errstr = $error["message"];
echo format_error( $errno, $errstr, $errfile, $errline);
}
}
function format_error( $errno, $errstr, $errfile, $errline ) {
$trace = print_r( debug_backtrace( false ), true );
$content = '<table style="background-color: #FFFFFF;margin: 0 auto;">
<thead><th style="width: 100px;">Item</th><th>Description</th></thead>
<tbody>
<tr>
<th>Error</th>
<td><pre>'.$errstr.'</pre></td>
</tr>
<tr>
<th>Errno</th>
<td><pre>'.$errno.'</pre></td>
</tr>
<tr>
<th>File</th>
<td>'.$errfile.'</td>
</tr>
<tr>
<th>Line</th>
<td>'.$errline.'</td>
</tr>
<tr>
<th>Trace</th>
<td><pre>'.$trace.'</pre></td>
</tr>
</tbody>
</table>';
return $content;
}
Это самый простой вариант использования. Добавьте этот код в общий для всей CMS файл и в случае ошибки увидите подробный отчет о проблеме вместо пустого экрана. И не стесняйтесь допилить код под собственные нужды.
п.с. если хотите это обернуть в класс, то вот каркас
class PHPFatalError
{
public function set_handler() {
register_shutdown_function(array($this, 'handle_shutdown'));
}
public function handle_shutdown() {
if (($error = error_get_last())) {
// echo сообщения о деталях ошибки
}
}
}