← К документации

Администрирование

Кеш и диагностика ошибок PHP

Как различить кеш данных и OPcache, проверить синтаксис файла и найти журнал нужного PHP-процесса.

Сначала определить слой кеширования

Кеш компонента, управляемый кеш, кеш ORM-запроса и OPcache хранят разные данные. Старый PHP-код может оставаться в OPcache, а устаревшая выборка — в кеше данных. Очистка всех каталогов кеша не объясняет, какой слой работал неправильно.

Для данных проверьте ключ кеша, его срок и механизм инвалидирования после записи. Для класса — фактический путь загруженного файла и настройки PHP-пула. Перенос произвольного файла ядра в /local/ сам по себе не переопределяет загрузку.

Проверка изменённого файла

На сервере с установленным PHP можно проверить синтаксис без исполнения прикладного кода. Путь ниже заменяется путём вашего файла.

php -l /var/www/example/local/modules/test.example/lib/worker.php

Успешная проверка синтаксиса не проверяет классы Bitrix, права, наличие модулей или результат запроса. Версия CLI PHP должна соответствовать версии, на которой выполняется сайт.

CLI и веб-процесс могут отличаться

php --ini

Команда показывает конфигурацию CLI. У PHP-FPM может быть другой ini-файл, другой пользователь и другой OPcache. Поэтому сброс кеша из консоли не подтверждает, что кеш веб-пула очищен.

Сведения о веб-конфигурации смотрите в закрытом административном инструменте или настройках пула. Публичный phpinfo() раскрывает пути и конфигурацию сервера.

Где искать ошибку

Сопоставьте время запроса в журнале веб-сервера с журналом PHP. При HTTP 500 проверьте синтаксическую ошибку, необработанное исключение, память и таймаут; пустая страница сама по себе не указывает на кеш.

В рабочей среде сообщения PHP не выводятся посетителю, но записываются в закрытый серверный журнал. Каталог /local/logs/ не закрывается автоматически. Проверка Result и запись технической ошибки разобраны отдельно.

Источники