Divné problémy s Dibi v kombinaci s Tracy debug reržimem
- milanb
- Člen | 64
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)