Logovani chyb a vyjimek pod CLI

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

Zdravim.

Do ruk se mi dostal web, bezici jeste na Nette 0.9.2 a jakozto zacatecnik s Nette 2 jsem zoufaly.
Potrebuji jednu akci, ktera generuje XMLko a nasledne ho uklada, volat pres CLI. Rozdelil jsem si aplikaci hned v indexu, kde pro CLI volam jiny bootstrap nez pro WEBove zpracovani ( ciste jen abych si v tom udelal poradek ). Nicmene, pokud si u sebe na lokale (Windows s WAMPem) volam pres CLI, tak vse funguje v poradku. Vse probehne, XML se vygeneruje. Problem nastava kdyz toto nahodim na ostry server (Ubuntu server). Pro zavolani pres CLI dojde k vyhozeni :

Server Error
The server encountered an internal error and was unable to complete your request. Please try again later.

V tu chvili jsem zkontroloval vsechny error logy na serveru, nicmene zadny error se mi nezalogoval. A jakozto zacatecnik netusim , kde delam chybu. Jestli treba jen mam spatne nastaveney bootstrap pro CLI, nebo spatne loguji. Opravdu nevim a jsem zoufaly.

Pridam zde kopii sveho bootstrapu pro CLI a config.ini

bootstrap_cli.php

// Step 1: Load Nette Framework
require LIBS_DIR . '/Nette/loader.php';

// Step 2: Configure environment
// 2a) enable Nette\Debug for better exception and error visualisation
Debug::enable('127.0.0.1');
Debug::enableProfiler();
Environment::setVariable('debugMode', true);

// 2b) load configuration from config.ini file
Environment::loadConfig();

// 2c) check if directory /app/temp is writable
if (@file_put_contents(Environment::expand('%tempDir%/_check'), '') === FALSE) {
	throw new Exception("Make directory '" . Environment::getVariable('tempDir') . "' writable!");
}

// 2d) enable RobotLoader - this allows load all classes automatically
$loader = new RobotLoader();
$loader->addDirectory(APP_DIR);
$loader->addDirectory(LIBS_DIR);
$loader->register();

// 2e) setup sessions
$session = Environment::getSession();
$session->setExpiration('+ 14 days');

// Step 3: Configure application
// 3a) get and setup a front controller
$application = Environment::getApplication();
$application->errorPresenter = 'Error';
$application->catchExceptions = TRUE;

// Step 4: Setup application router
$router = $application->getRouter();
$application->allowedMethods = FALSE;
//$router[] = new CliRouter();
$application->router[] = new CliRouter(array(
    'module' => 'Admin',
    'presenter' => 'Export'
));

ob_start();

// Step 5: Run the application!
$application->run();

$page = ob_get_flush();

config.ini

[common]

[common.set!]
date.timezone = "Europe/Prague"
iconv.internal_encoding = "%encoding%"
mbstring.internal_encoding = "%encoding%"

[production < common]


[development < production]

[console < common]

Podotykam ze na lokale bezi vse jak ma. Budu rad za kazdou radu. Predem rikam pro rejpaly, ze jsem se snazil prolezt forum co to jen slo,ale nikde jsem nenasel reseni. A take jsem zacatecnik.

Budu rad za kazdou radu, uz na tom sedim pul den a nemuzu se pohnout dal.

Editoval wohral (25. 2. 2013 12:08)

Tomáš Kolinger
Člen | 136
+
0
-

Spíš formalita ale musím se zeptat – aplikace běží normálně, tj. máš povolen zápis do složky temp a log, generuje se keš?

Kde definuješ %tempDir%? Generuje se /log/php_error.log?

wohral
Člen | 13
+
0
-

Tak za pomoci kolegy se mi to podarilo. Problem byl v me hlouposti a neznalosti. Stacilo spravne nastavit debugovani v bootstrapu:

V mem pripade to znamenalo zmenit kod (zakomentovat) nasledovne v bootstrap_cli.php

//Debug::enable('127.0.0.1, localhost, 31.7.241.73');
Debug::enable(false);
//$application->catchExceptions = false;
//Debug::enableProfiler();
//Environment::setVariable('debugMode', true);