Администрирование
Кеш и диагностика ошибок 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 и запись технической ошибки разобраны отдельно.