Akutní pomoc [dibi, Debugger]

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
dog.big
Člen | 49
+
0
-

Zdravím,
po přechodu na nové Nette (stable větev), kdy se mi vše rozkopalo, jsem vše dal do pořádku díky návodům a changelogům.
Jediné. Co mi nyní nejde je to nejstěžejnější a to připojení dibi databáze. Nevím, jak ji po přechodu na novou verzi zinicializovat.. Po doplnění inicializace to vyplivne chybu: Configuration must be array, string or object u připojování k db. Už jsem v totální zoufalosti.
Dále mi odmítá „nastartovat“ debugger.

Důležité části kódu z boostrap.php

...
$configurator = new Nette\Config\Configurator;
$configurator->addParameters($params);
$configurator->enableDebugger(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->addConfig(__DIR__ . '/config.neon');



$configurator->createRobotLoader()
        ->addDirectory('app')
        ->addDirectory('dibi')
        ->addDirectory('libs/Nette/Extras')
        // TODO CACHE ->setCacheStorage(new Nette\Caching\Storages\FileStorage('temp'));
        ->register();

Debugger::$logDirectory = __DIR__ . '/../log';
Debugger::$strictMode = TRUE;
Debugger::enable(Debugger::DEVELOPMENT);

$container = $configurator->createContainer();

dibi::connect($container->parameters->database);
...

Důležité části kódu z config.neon

common:
	parameters:
		database:
			profiler: true
			lazy: true
...

...
production < common:
parameters:
	database:
		driver: mysql
		host: *****
		database: *****
		username: *****
		password: *****
		charset: utf8
...

Děkuji za rychlé rady.

dog.big
Člen | 49
+
0
-

Fajn, použil jsem starší:

dibi::connect($container->params['database']);

nyní už to „něco dělá“, ale opět vyhodí vyjímku
Can't connect to local MySQL server through socket ‚/var/run/mysqld/mysqld.sock‘ (2) search

Jan Endel
Člen | 1016
+
0
-

a

dump($container->params['database']);

vypíše co?

Editoval pilec (13. 2. 2012 20:57)

dog.big
Člen | 49
+
0
-

dump($container->params[‚database‘]);

nic nevypisuje, jelikož nevím kam s tím dumpem… v boostrapu těžko
echo vypíše jen „array“

Jan Endel
Člen | 1016
+
0
-

A proč v bootstrapu těžko?

dog.big
Člen | 49
+
0
-

nevím, asi v tom array nic není, echo nic neukazuje a env. v debug logu taky nic.. :(
prostě to nenačítá správně teď konfiguraci dibi z config.neon,,

Též mi to začlo házet 404 obecnou chybu u každého prvního načtení úvodní stránky.. něco ve smyslu špatných routů.. ale chyba je jen v logu, nezpůsobuje pád applikace

SendiMyrkr
Člen | 30
+
0
-
  1. chybí ti tam odsazení u parameters v sekci production, neni to tim?
  2. místo echo můžeš použít print_r($var)
  3. pokud si na developmnet nepřepisuješ v sekci development jinym nastavením?

Editoval SendiMyrkr (13. 2. 2012 21:39)

SendiMyrkr
Člen | 30
+
0
-

A ještě k debuggeru, myslim že následující řádky jsou zbytečný, viz řádka 4(enableDebugger):

Debugger::$logDirectory = __DIR__ . '/../log';
Debugger::$strictMode = TRUE;
Debugger::enable(Debugger::DEVELOPMENT);
dog.big
Člen | 49
+
0
-

Zdravím,
podařilo se mi opravit dibi problémy promazáním cache. Dnes mi Nette připravilo pěknou sodu, nevím proč, ale cachoval se mi neon.conf (bug?).

Debug mód stále nejde, debug bar se nezobrazí a ani případná stránka s err.

Jan Endel
Člen | 1016
+
0
-

Necachuje se přímo neon.conf, nýbrž až SystemContainer, který se ukládá do tempu a a teprve pokud tam chybí, generuje se za pomocí neon.conf.

Co se týče Debug módu zkus se podívat tady, možná něco děláš jinak. To co jsi uvedl by mělo uvést aplikaci do development módu.

dog.big
Člen | 49
+
0
-

Zdravím,
asi jsem na to přišel.
Nette neumí nadále rozpoznávat IP adresy z arraye

Nefunguje

...
// Nette Debugger
$configurator->enableDebugger(__DIR__ . '/../log');
Debugger::enable(array('IP1','IP2'));
..

ale tohle funguje

...
// Nette Debugger
$configurator->enableDebugger(__DIR__ . '/../log');
Debugger::enable('IP1');
...

že by bug?

Editoval dog.big (14. 2. 2012 11:32)

Aurielle
Člen | 1281
+
0
-

Nareportováno. Jinak Debugger bere i více IP přímo ve stringu oddělených čárkou. V mezičase můžeš využít (preferovaný) způsob nastavování produkčního módu přes Configurator, viz API.

knoxa
Člen | 16
+
0
-

Nevím jestli už si to vyřešil celé či ne, ale ještě si zkus updatnout dibi na verzi 2.0 (vyšla společně s Nette 2.0) a promázni temp. I když mě myslím jela i „stará“ dibi 1.5 s Nette 2, ale nechci kecat. Každopádně ti pak pofrčí db profiler.

A pokud používáš dibi staticky jak píšeš, tak můžeš připojení k db testovat rovnou v bootstrap.php

<?php
dibi::connect($container->parameters->database);
if(dibi::isConnected())
	dump(dibi::getDatabaseInfo());	//kam ses pripojil
else
	echo 'nepripojen';
die;
?>

Pak můžeš řešit dál co ti nejede v Nette.

Editoval knoxa (15. 2. 2012 15:13)