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

Symbool

Сообщения
37
Симпатии
14
Онлайн
2ч 29м
#1
Ну, привет.

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

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

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

Предупреждения, или Warning - тип ошибок, которые могут возникать в коде, но обработка скрипта все равно продолжается.
Пример:
Warning: include(script.php): failed to open stream: No such file or directory in - on line 2

Warning: include(): Failed opening 'script.php' for inclusion (include_path='.:') in - on line 2

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

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

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

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

Пример:
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 43 bytes) in /var/www/site.ru/core/db_prepared.php on line 85
Данная ошибка сообщает о том, что при обработке скрипта был превышен лимит разрешенной оперативной памяти, в данном случае - 256 мегабайт.
Тут поможет только:
1. Увеличение объема выделяемой памяти на обработку скрипта.
2. Оптимизация - тут дело тонкое, и зависит от конкретного кода.

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

Пример:

Deprecated: Function ereg() is 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 для пользовательских функций, генерируемые и закладываемые в функции самим разработчиком.


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

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

Темы из этой же категории

Dani47

Сообщения
9
Симпатии
0
Онлайн
0
#2
Спасибо за руководство!