Пустой экран при использовании выходного буфера и ошибки синтаксиса в включенном файле.
PHP не показывает ошибок из выходного буфера.
Как увидеть синтаксические ошибки буфера вывода php?
В моем проекте я использовал @ для скрытия ошибок, если файл не существует. Но если файл существует и имеет фатальные ошибки, они также не отображались бы.
Вот пример кода.
<?php $title = 'Some title'; ob_start(); @include ('body.tpl'); //I have some php here $content = ob_get_clean(); ?><!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title><?= $title; ?></title> </head> <body> <?= $content; ?> </body> </html>
Один из вариантов – переопределить обработчики ошибок и вызвать ob_end (); перед печатью брошенной ошибки / предупреждения / исключения. Другой вариант – часто проверять журнал ошибок, если вы сталкиваетесь с нечетным поведением.
Не используйте @include ('body.tpl');
Что я сделал 🙁
Mmm … Вы можете использовать Exceptions следующим образом:
$includeFile = 'blah.php'; ob_start(); try { if (!is_file($includeFile)) { throw new Exception('File not found'); } include $includeFile; } catch (Exception $e) { include 'error-content-page.php'; } $content = ob_get_clean();