Разбор ошибок интерпретатора, что да как

Тема в разделе "FAQ", создана пользователем Symbool, 17.01.16.

  1. Symbool

    Symbool Участник

    Сообщения:
    29
    Репутация:
    11
    Рейтинг:
    +13 / -0
    Ну, привет.

    Собственно, в PHP можно словить несколько видов ошибок и предупреждений, которые могут нарушить обработку кода, либо же вовсе прервать исполнение скрипта.
    Все возможные виды ошибок и предупреждений выпилю сюда, как и варианты их решений.

    Извещение, или Notice - не серьезный уровень ошибок кода, как правило подавляемый интерпретатором. Не мешает исполнению скрипта, а лишь сообщает, что, к примеру, чего то не хватает. Скажем, например, в функцию отдается нулевое значение, когда параметр должен что либо содержать.

    Пример:
    Данная ошибка может говорить о том, что мы пытаемся обратиться к элементу массива с индексом 2, которого не существует.

    Предупреждения, или Warning - тип ошибок, которые могут возникать в коде, но обработка скрипта все равно продолжается.
    Пример:
    Данная ошибка сообщает нам, что:
    1. Не удается подключить скрипт, т.к. не существует такого файла \ директории, который указан в пути инклюда, на строке 2
    2. Ошибка открытия скрипта "script.php" для подключения (путь подключения), на строке 2

    Решается указанием правильного пути для инклюда.

    Ошибки, которые интепретатор не может подавить \ исправить самостоятельно - Fatal Error - тип ошибок, которые, как уже сказано, интерпретатор не может подавить самостоятельно, и обработка сценария прекращается.

    Могут возникать, к примеру, из за синтаксических ошибок в коде - лишние, либо недостающие символы, не закрытые процедурные скобки и т.д.

    Пример:
    Данная ошибка сообщает о том, что при обработке скрипта был превышен лимит разрешенной оперативной памяти, в данном случае - 256 мегабайт.
    Тут поможет только:
    1. Увеличение объема выделяемой памяти на обработку скрипта.
    2. Оптимизация - тут дело тонкое, и зависит от конкретного кода.

    Ошибки, связанные с использованием устаревших функций, или Deprecated - уровень ошибок, при которых сообщается, что в коде используется устаревшая функция, которая будет вскоре выпелена из интерпретатора.

    Пример:

    Как уже понятно, тут интерпретатор сообщил нас, что мы используем устаревшую функцию ereg().

    Решение простое - использовать новый аналог этой функции.


    Это - 4 основных, самых часто встречаемых уровней ошибок в PHP, но на самом деле их на порядок больше.
    Собственно, дам краткое пояснение и к ним.
    П.С. вывод большинства из описанных ниже сообщений может быть отключен в настройках PHP.

    1. Parse - ошибки парсинга кода интерпретатором. В ходят в состав Fatal Error и сообщают о том, что где то есть какая то синтаксическая ошибка.
    2. Core Error - фатальные ошибки, которые могут возникать при старте PHP, и сообщают о неполадках в ядре самого PHP, и им же генерируются эти сообщения.
    3. Core Warning - предупреждения, о наличии ошибок в ядре РНР. Аналог Warning, но связаны с самим ядром.
    3. Compile Error - ошибки Zend, при компиллировании кода. Генерируются самим зендом.
    4. Compile Warning - аналог Warning для Zend
    5. All - все уровни ошибок.
    6. Strict - примечания интерпретатора, скажем так, интеллектуальный уровень ошибок, который сам предлагает вам варианты оптимизации кода для его совместимости с более старыми версиями РНР
    6. User Notice, User Warning, User Error - аналоги Notice, Warning и Error для пользовательских функций, генерируемые и закладываемые в функции самим разработчиком.


    Вот, вроде бы, и все.

    П.С. готов помочь, по мере появления свободного времени, с разбором ошибок Вашего кода. Пилите его сюда, в тему, будем решать :)
     
    • Мне понравилось Мне понравилось x 1
    • Dani47

      Dani47 Участник

      Сообщения:
      9
      Репутация:
      5
      Рейтинг:
      +0 / -0
      Спасибо за руководство!