Thank you for confirming that activation and deactivation now work.
A search for a folder named "monolog" does not always find the copy in cause. Depending on how a plugin bundles it, the library can sit in a folder named "Monolog" with a capital M (the search is case-sensitive on Linux servers), inside a single .phar archive, in a must-use plugin (wp-content/mu-plugins), or in a drop-in such as wp-content/advanced-cache.php or object-cache.php. The PHP error log will not help either: it only names the kit's own file.
The most reliable way is to ask PHP itself which file it loads. Create a file named find-monolog.php in the kit folder, next to its index.php, with this content:
Code:
<?php
// find-monolog.php: TEMPORARY diagnostic for the XLS Padlock WooCommerce kit. DELETE IT after use.
require_once __DIR__ . '/inc/vendor/autoload.php';
$f3 = Base::instance();
$f3->config(__DIR__ . '/inc/config.ini');
restore_error_handler(); // keep plugin notices from aborting the check
require_once realpath(__DIR__ . '/' . ltrim($f3->get('wprelativefolder'), '/')) . '/wp-load.php';
header('Content-Type: text/plain');
echo "Kit's own Monolog: " . __DIR__ . "/inc/vendor/monolog\n\n";
$c = 'Monolog\LogRecord';
if (class_exists($c) || interface_exists($c)) {
$r = new ReflectionClass($c);
echo $c . ($r->isInterface() ? ' is an INTERFACE (Monolog 2): CONFLICT' : ' is a class (Monolog 3): OK') . "\nLoaded from: " . $r->getFileName() . "\n";
}
foreach (\Composer\Autoload\ClassLoader::getRegisteredLoaders() as $dir => $loader) {
if ($file = $loader->findFile($c)) echo "\nComposer copy of Monolog: " . realpath($file);
}
Then open it in your browser, at the same address as the kit followed by /find-monolog.php. It loads WordPress the same way as the kit and shows which copy of Monolog PHP really uses:
- "is an INTERFACE (Monolog 2): CONFLICT" followed by "Loaded from:" and a path: the folder in that path tells you which plugin or theme ships the older Monolog.
- "is a class (Monolog 3): OK": the kit's own copy wins at that point. In that case, please post the full output here.
Please delete find-monolog.php right after the test: anyone who knows its address could open it, and it displays server paths. If you post the output here, you can hide the beginning of the paths.
Once the plugin is known, you can check whether an update of it is available, or ask its author whether its copy of Monolog can be isolated. In the meantime, the kit works fully with logging turned off: the log is only needed to investigate a problem.