Как отлаживать и регистрировать проблемы PHP OPcache - PullRequest
0 голосов
/ 31 августа 2018

Я использую 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.

EDIT: Для добавления ссылки на вставку требуется добавить код к вопросу. Вот начало файла pastebin:

<?php

global $_LANGADM;
$_LANGADM = array();

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

TL; DR

Я ищу:

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

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

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

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

1 Ответ

0 голосов
/ 04 сентября 2018

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).

...