Здравствуйте. Пишу сайт на php. Сейчас если возникает какая-нибудь ошибка то вместо страницы мне показывается ошибка вида: Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'ProectController' does not have a method 'actionSdfgs' in Z:\home\localhost\www\components\Router.php on line 80 И пока что это удобно. Я вижу в чем дело и исправляю недоразумение. Но как сделать чтобы в итоге пользователи видели красивую страничку 404? Пытался добавить строчку ErrorDocument 404 /404.php в .htaccess - безрезультатно. Я так понимаю что за отображение этих ошибок отвечает вот этот код в index.php, но не знаю что нужно изменить... Помогите пожалуйста! PHP: ini_set('display_errors',1); error_reporting(E_ALL);
404 это когда страница не найдена, когда ошибка произошла, то можно показывать ошибку 500. Для безопасности, посетителям сделай display_errors 0. Но нужно писать так программы, чтобы ошибок не возникало или перехватывать их через https://secure.php.net/manual/en/language.errors.php7.php https://secure.php.net/manual/en/function.set-exception-handler.php https://habrahabr.ru/post/261451/
Писать код так чтобы не было ошибок, это очень правильно. Как сделать чтобы когда пользователь вводит не правильный адрес, типа site.ru/lubudakakayanibud он видел не вышеуказанное сообщение а страницу 404.php? С остальными ошибками все и так ясно. В идеале их просто не должно быть!
взять например тру ( код ) кетч переменная ( ссылаемся на 404.пхп ) но думаю такой подход фиговый, каждый раз писать везде эту конструкцию...
404 никак не связано с Вам нужно именно то решение, которое подсказал @denis01. Тот факт, что вам кажется иначе, не делает вас правым. Вы пришли на форум за советом у более опытных людей. В таком случае либо прислушайтесь к их совету, либо...не спрашивайте на форуме решение проблемы. --- Добавлено --- Элементарно, Ватсон, найти причину ошибки и исправить ее. Это не ошибка отсутствия страницы, это ошибка в коде. Если это у вас роутинг так отрабатывает, то, значит, у вас кривоватый роутинг и его надо дописать.
Ну слушайте, я отнюдь не прошу вас исправлять мои ошибки. Поправьте меня если я ошибаюсь, когда пользователь вводит неправильный или несуществующий адрес это ошибка 404, и правильнее всего показать ему красивую страничку? Так вот именно в этом мой вопрос! Как сделать чтобы в случае ошибки 404 пользователь видел 404.пхп?
В вашем случае когда пользователь вводит неправильный адрес, у вас роутинг спотыкается и выбрасывает WARNING. Сначала решите эту проблему. А уже потом будем 404 прикручивать.
А это может быть очень даже взаимосвязано: PHP: if (есть метод) обратиться к методу; else вызвать обработчик 404-ой; PHP – такой язык, что ошибки все равно иногда могут появляться, поэтому, как выше написали, в продакшене обязательно отключаем вывод ошибок.
Появление ошибок, тащем-та не потому что "такой язык", а потому что "такой программист" и "такой тестрировщик". Отключение оных сделано не для того, чтобы "самопоявившиеся ошибки" не мешали людям, а чтобы усложнить жизнь всяким эксплойтоковыряльщикам, в первую очередь, для которых это отличное подспорье. Ну и да, ошибки обычно не просто отключают, а перенаправляют в какой-нибудь файл.
как писали выше, то роутинг определив что нечего вызывать, может вызвать 404, или запросили скажем новость которой нету, тоже в коде можно показать 404
Ну вот собственно и все получилось. Дописал роутеру else и добился именно того чего хотел. Иногда, казалось бы, очевидные вещи ускользают от нашего взора, все ж просто было. Всем спасибо за помощь + вам в карму добрые люди!