Как отлаживать и регистрировать проблемы PHP OPcache

Я использую WAMP на Windows 10, работает PHP 7.2 с Apache 2.4

Когда я включаю OPcache, загружаемая страница вылетает со следующей ошибкой в ​​Chrome:

ERR_CONNECTION_RESET

Я проверил журнал ошибок php и журнал ошибок Apache и не смог найти сообщений об ошибках. Я пытался отключить Xdebug, все тот же сбой и без ошибок в журналах. Отключение OPcache или переключение на php 7.1 или ниже решает проблему.

Я искал всю информацию о том, как отлаживать то, что вызывает сбой OPcache (и причину), поскольку его отключение не является решением, но не смог найти ничего полезного (также проверил подобные вопросы SO, как этот, который также не имеет резолюции), поэтому я обращаюсь к экспертам здесь за помощью, которая, я уверен, также поможет другим.

Спасибо.

PS Обратите внимание, что после очень долгих проб и ошибок я смог найти файл в своем приложении php, который вызывал сбой / сбой OPcache, и занес его в черный список в конфигурации OPcache php.ini (также уменьшив его размер, работал нормально, поэтому я сомневаюсь, что проблема заключалась в самом коде внутри), но я все еще ищу простой способ отладки таких проблем без необходимости проверять и проверять каждый файл на сервере. Я также не знаю, почему происходит сбой, поэтому поиск причины сбоя поможет подать отчеты об ошибках разработчикам OPcache.

РЕДАКТИРОВАТЬ: Для добавления ссылки на вставку требуется добавить код к вопросу. Вот начало файла pastebin:

<?php

global $_LANGADM;
$_LANGADM = array();

$_LANGADM['AdminAddressesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected';
$_LANGADM['AdminAddressese25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?';

TL; DR

Я ищу:

1) Способ легко определить, что OPcache является расширением, которое приводит к сбою сценария, без необходимости проходить через каждое расширение вручную и методом проб и ошибок (включайте и выключайте их, пока не найдете расширение, которое не удалось).

2) Легко найти способ / журнал, который показывает, какой файл и причины / с он выходит из строя, когда включен OPcache.

Проще говоря - как мы можем узнать, когда, где и почему происходит сбой OPcache при сбое, так как без каких-либо отчетов / журналов это все равно, что искать иголку в стоге сена, особенно когда даже Xdebug, похоже, ничего не регистрирует или не выводит при сбое OPcache по какой-то причине.

еще раз спасибо

1 ответ

1) Способ легко определить, что OPcache является расширением, которое приводит к сбою сценария, без необходимости проходить через каждое расширение и включать / выключать их до тех пор, пока не будет найдено расширение, которое не удалось.

Вы можете добавить следующее в ваш скрипт, чтобы временно отключить opcache.

ini_set('opcache.enable', 0);

2) Легко найти способ / журнал, который показывает, какой файл и причины / с он выходит из строя, когда включен OPcache.

Это сложнее без дополнительной информации о приложении, которое вы пытаетесь отлаживать. Вы можете начать, убедившись, что ваш дисплей ошибок включен.

ini_set('display_errors', 1); error_reporting(~0);

Однако, если это не сработает, я бы предложил отладку вашего приложения с помощью Xdebug.

(Удаленный) отладчик Xdebug позволяет вам исследовать структуру данных, интерактивно просматривать и отлаживать ваш код (с https://xdebug.org/docs/remote).

Другие вопросы по тегам