Как отлаживать и регистрировать проблемы 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, такие как этот, у которого также нет разрешения), поэтому я обращаюсь к экспертам за помощью, которые Я уверен, что помогу и другим.

Спасибо.

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

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

<?php

global $_LANGADM;
$_LANGADM = array();

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

TL; DR

Я ищу:

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

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

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

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


person Nikita 웃    schedule 31.08.2018    source источник
comment
Вы можете показать файл, из-за которого произошел сбой?   -  person Barmar    schedule 31.08.2018
comment
Если у вас есть сценарий, вызывающий проблему с OpCache, покажите его нам. Как и почти все вопросы по SO, если вы покажете нам код, вы получите дополнительную помощь.   -  person RiggsFolly    schedule 31.08.2018


Ответы (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).

person George    schedule 04.09.2018
comment
Спасибо, @George, отчет об ошибках WAMP настроен на регистрацию всех ошибок по умолчанию, и, как я писал в вопросе, Xdebug установлен и запущен. Он не производил никаких выходных и / или регистрируемых событий. Что касается временного отключения OPcache, я знаю, как это сделать, но на самом деле мне нужно просмотреть все расширения, чтобы выяснить, какое из них не работает, включая OPcache, чего я хочу избежать. Я хочу, чтобы OPcache сообщал, когда, где и почему он не работает, когда это происходит .. Как? - person Nikita 웃; 04.09.2018
comment
Последняя часть моего ответа указывает на пошаговую отладку, которая может быть вашим лучшим вариантом в подобных случаях, позволяя вам интерактивно проходить через код во время выполнения. Это определенно стоит времени и усилий, необходимых для настройки. - person George; 04.09.2018