Divné problémy s Dibi v kombinaci s Tracy debug reržimem

milanb
Člen | 64
+
0
-

Ahoj,
mám trošku zoufaký problém s Dibi a Tracy. Nad PHP 8.2 a Nette 3.2 + Dibi 5.0.1 + Tracy 2.10.5 mám aplikaci, která v testovacím prostředí na rozdíl od produkce (1) zapíná Tracy dabugger a (2) připojuje se k jiné DB. Konkrétně to řeším v bootstrap.php takto:

// zjištění a nastavení debug režimu: buď jsem localhost, nebo na test.magnusystem.cz
$serverNameParts = explode('.', $_SERVER['SERVER_NAME']);
$isDev = in_array('localhost', $serverNameParts);
$isTest = in_array('test', $serverNameParts);
if ($isTest || $isDev) { //zapnout debug
  $configurator->setDebugMode(true);
  Tracy\Debugger::$logSeverity = E_NOTICE | E_WARNING; // loguj PHP chyby jako E_NOTICE nebo E_WARNING s podrobnými informacemi (HTML report)
  Tracy\Debugger::$strictMode = true; // zobraz všechny chyby
  Tracy\Debugger::$scream = E_USER_DEPRECATED | E_DEPRECATED;
} else {
  $configurator->setDebugMode(false);
  // v PROD tady musí být Tracy\Debugger::$productionMode == true
}
...
$configurator->addConfig(__CONFIG__ . '/config.neon');
if ($isDev)
  $configurator->addConfig(__CONFIG__ . '/config.dev.neon');
else if ($isTest)
  $configurator->addConfig(__CONFIG__ . '/config.test.neon');

Konfigurace pro testovsací prostředí v config.test.neon jen mění parametry k DB:

dibi:
  database: d342549_mextest
  username: w342549_mextest
  password: **********

Když se v testovacím prostředí a debug režimu připojím k produkční DB, vše funguje. Když se v testovacím prostředí bez debugger připojím k testovací DB, taky vše funguje. Když se ale v testovacím prostředí s debuggerem připojím k testovací DB, tak se zjeví exception:
Dibi\DriverException #1045 Access denied for user 'w342549_mextest'@'10.36.193.202' (using password: YES)

Když su udělám Tracy dump připojení v konstruktoru presenteru, dostanu pro produkci i test naprosto stejné hodnoty, samozřejmě až na název DB, login a heslo (to jsem vymaskoval až já tady):

array (8) bdump($database->getConfig(), "DB") 📍
'host' => 'md400.wedos.net'
'database' => 'd342549_metrix'
'username' => 'w342549_metrix'
'password' => '**********'
'lazy' => true
'result' => array (2)
  'formatDate' => null
  'formatDateTime' => null
'driver' => 'mysqli'
'name' => null

Samozřejmě jsem několikrát ověřil heslo a i celé připojení pomocí stejnůch údajů v phpMyAdmin.
Netušíte někdo, čím by to mohlo být?
Děkuji.

Editoval milanb (30. 3. 20:17)