Особенностью модуля от компании «
Сегодня разберем примеры ошибок, с которыми можете столкнуться.
[spoiler]
Переход к PHP 8

При переходе к версии PHP 8 усилен контроль типов аргументов встроенных функций. Шаблоны и компоненты, разработанные для более старых версий PHP, могут не учитывать граничные ситуация отсутствия данных. Например, товары без изображений или под заказ.
Примеры сообщений:
- array_keys(): Argument #1 ($array) must be of type array, null given
- count(): Argument #1 ($value) must be of type Countable|array, null given
- array_key_exists(): Argument #2 ($array) must be of type array, null given
- in_array(): Argument #2 ($haystack) must be of type array, null given
- array_merge(): Argument #2 must be of type array, bool given
- Cannot access offset of type string on string
Падение базы данных и кеша

При достижении ограничения оперативной памяти и объема дискового пространства процесс базы данных MySQL может стать недоступен, что приведет к фатальному исключению создания страницы. При использовании кеша Memcached или Redis в случае падения сайт продолжит работу, но время формирования создания страницы увеличиться.
Примеры сообщений:
- Mysql connect error [localhost]: (2002) Connection refused
- Mysql connect error [localhost]: (2006) MySQL server has gone away
- Memcache::pconnect(): Can't connect to unix:///tmp/memcached.sock:0, Connection failed: Connection refused (111)
Ошибки призраки
Исключения при попытке записи ошибки в лог и при окончании буферизации могут отображаться в виде пустой страницы, что приводит к сложностям в отладке. Проблему обновления пакета psr/log разобрали в
Сообщение об ошибке «ob_start(): Cannot use output buffering in output buffering display handlers» часто является свидетельством двух ошибок:
- Использования буферизации внутри Отложенных функций или обработчиках события OnEndBufferContent.
- Исключение на странице, которое вызвало экстренное завершение буферизации.
- Declaration of Bitrix\Main\Diag\Logger::log($level, Stringable|string $message, array $context = []): void must be compatible with Psr\Log\LoggerInterface::log($level, $message, array $context = []) in ..../bitrix/modules/main/lib/diag/logger.php
- ob_start(): Cannot use output buffering in output buffering display handlers