За последние 24 часа нас посетили 17854 программиста и 1286 роботов. Сейчас ищут 1449 программистов ...

Как настроить 404?

Тема в разделе "PHP для новичков", создана пользователем KirtuZ, 9 ноя 2016.

  1. KirtuZ

    KirtuZ Новичок

    С нами с:
    19 сен 2016
    Сообщения:
    31
    Симпатии:
    2
    Здравствуйте.

    Пишу сайт на 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:
    1. ini_set('display_errors',1);
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    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/
     
  3. KirtuZ

    KirtuZ Новичок

    С нами с:
    19 сен 2016
    Сообщения:
    31
    Симпатии:
    2
    Писать код так чтобы не было ошибок, это очень правильно.

    Как сделать чтобы когда пользователь вводит не правильный адрес, типа site.ru/lubudakakayanibud он видел не вышеуказанное сообщение а страницу 404.php?

    С остальными ошибками все и так ясно. В идеале их просто не должно быть!
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    взять например
    тру (
    код
    )
    кетч переменная
    (
    ссылаемся на 404.пхп
    )

    но думаю такой подход фиговый, каждый раз писать везде эту конструкцию...
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ему не нужна 404, он просто не знает, как правильно поступать в таких случаях.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    404 никак не связано с
    Вам нужно именно то решение, которое подсказал @denis01. Тот факт, что вам кажется иначе, не делает вас правым. Вы пришли на форум за советом у более опытных людей. В таком случае либо прислушайтесь к их совету, либо...не спрашивайте на форуме решение проблемы.
    --- Добавлено ---
    Элементарно, Ватсон, найти причину ошибки и исправить ее. Это не ошибка отсутствия страницы, это ошибка в коде. Если это у вас роутинг так отрабатывает, то, значит, у вас кривоватый роутинг и его надо дописать.
     
  7. KirtuZ

    KirtuZ Новичок

    С нами с:
    19 сен 2016
    Сообщения:
    31
    Симпатии:
    2
    Ну слушайте, я отнюдь не прошу вас исправлять мои ошибки. Поправьте меня если я ошибаюсь, когда пользователь вводит неправильный или несуществующий адрес это ошибка 404, и правильнее всего показать ему красивую страничку? Так вот именно в этом мой вопрос! Как сделать чтобы в случае ошибки 404 пользователь видел 404.пхп?
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    В вашем случае когда пользователь вводит неправильный адрес, у вас роутинг спотыкается и выбрасывает WARNING. Сначала решите эту проблему. А уже потом будем 404 прикручивать.
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.840
    Симпатии:
    651
    А это может быть очень даже взаимосвязано:
    PHP:
    1. if (есть метод) обратиться к методу;
    2. else вызвать обработчик 404-ой;
    PHP – такой язык, что ошибки все равно иногда могут появляться, поэтому, как выше написали, в продакшене обязательно отключаем вывод ошибок.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Появление ошибок, тащем-та не потому что "такой язык", а потому что "такой программист" и "такой тестрировщик".

    Отключение оных сделано не для того, чтобы "самопоявившиеся ошибки" не мешали людям, а чтобы усложнить жизнь всяким эксплойтоковыряльщикам, в первую очередь, для которых это отличное подспорье. Ну и да, ошибки обычно не просто отключают, а перенаправляют в какой-нибудь файл.
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    как писали выше, то роутинг определив что нечего вызывать, может вызвать 404, или запросили скажем новость которой нету, тоже в коде можно показать 404
     
    KirtuZ нравится это.
  12. KirtuZ

    KirtuZ Новичок

    С нами с:
    19 сен 2016
    Сообщения:
    31
    Симпатии:
    2
    О! Спасибо, пошел пытаться переписать роутер:)
     
  13. KirtuZ

    KirtuZ Новичок

    С нами с:
    19 сен 2016
    Сообщения:
    31
    Симпатии:
    2
    Ну вот собственно и все получилось.:) Дописал роутеру else и добился именно того чего хотел.
    Иногда, казалось бы, очевидные вещи ускользают от нашего взора, все ж просто было.
    Всем спасибо за помощь:) + вам в карму добрые люди!:)
     
    igordata и denis01 нравится это.
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    крутяк!