Logovani chyb a vyjimek pod CLI
- wohral
- Člen | 13
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
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
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);