Здравствуйте. Вопрос, может, глупый, но ничего путёвого я в гугле не нашёл. У меня есть несколько файлов в папке "pages", и в индексе я хочу их подключить, но если файл не найден - выдать ошибку, только не пхпшную, а человеко-понятную. Как бы это сделать? Конструкция PHP: if ((include './pages/'.$page) == false) { echo 'АШЫПКА'; } не работает, (Выводятся варнинги что файл не найден, и текст 'АШЫПКА' в коне. Но мне б без варнингов). Можно как-то сделать в одну строчку, или в несколько, но без перебора и поиска файлов?
PHP: <?php try { $file = '/path/file.php'; if (!file_exists($file)) { throw new Exception ('Твою ж мать!... А куды файл-то делся?'); } include $file; } catch(Exception $e) { echo $e->getMessage(); }
-Ребят, мне бы дергать зубы научиться, пробую через задницу, все никак не получается. -Вот так вот, рот пациента открыл и готово. -Ну так и я могу, а без открытия рта никак нельзя? Ответ - тебе шашечки или ехать?
Фу, так даже я не делаю) Ну я думал, может можно меньшим количеством кода обойтись как-то. Ну всё, понял, без проверки - никак
Можно отключить php ошибки через .httaccess PHP: php_flag display_errors off #показать все ошибки кроме предупреждений (Notice) php_value error_reporting "E_ALL & ~E_NOTICE Источник
@Danil005, ну не надо ерунду советовать. Возможность отключать вывод ошибок создана вовсе не для того, чтобы их можно было игнорить. Она нужна, чтобы сайт на продакшне, если вдруг в нём при отладке была пропущена какая-то ошибка (случайно!), не плюнул бы в конечного пользователя используемым SQL-запросом или именами файлов php, ну в общем тем, что пользователю знать не нужно, а вот хакеру было бы интересно
Если будут проблемы связанные с вмешательством хакера, то включать ошибки, скорее всего, уже будет незачем
Всё можно PHP: // Пример хандлера с php.net/manual/ru/class.errorexception.php#variable.post.basic function exception_error_handler($severity, $message, $file, $line) { if (!(error_reporting() & $severity)) { // Этот код ошибки не входит в error_reporting return; } throw new ErrorException($message, 0, $severity, $file, $line); } set_error_handler("exception_error_handler"); //////// try { include 'lol.php'; } catch (ErrorException $e) { // надо убедиться, что исключение пришло не из подключенного файла // а именно из этой функции include if ($e->getTrace()[1]['file'] === __FILE__ && $e->getTrace()[1]['function'] === 'include') { echo 'Четыреста Четыре'; } else { // левое исключение летит дальше throw $e; } } если нужно