Problém s chybovými hláškami
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- HosekPetr
- Člen | 31
Dobrý den,
přošel jsem snad všechny příspěvky na fóru a bohužel stále nevím, jak vyřešit můj problém. Neustále se mi zobrazují nějaké interní chybové zprávy. Zjistil jsem to podle zdrojového kódu chybové zprávy, který je také přiložen.
Edit: Zobrazuje se mi interní hláška nette místo toho, aby se mi zobrazobala vlastní šabloma chyby.
<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name=robots content=noindex><meta name=generator content="Nette Framework">
<style>body{color:#333;background:white;width:500px;margin:100px auto}h1{font:bold 47px/1.5 sans-serif;margin:.6em 0}p{font:21px/1.5 Georgia,serif;margin:1.5em 0}small{font-size:70%;color:gray}</style>
<title>Server Error</title>
<h1>Server Error</h1>
<p>We're sorry! The server encountered an internal error and was unable to complete your request. Please try again later.</p>
<p><small>error 500</small></p>
ErrorPresenter.php
use Nette\Diagnostics\Debugger,
Nette\Application as NA;
/**
* Error presenter.
*
* @author John Doe
* @package MyApplication
*/
class ErrorPresenter extends BasePresenter
{
/**
* @param Exception
* @return void
*/
public function renderDefault($exception)
{
if ($this->isAjax()) { // AJAX request? Just note this error in payload.
$this->payload->error = TRUE;
$this->terminate();
} elseif ($exception instanceof NA\BadRequestException) {
$code = $exception->getCode();
// load template 403.latte or 404.latte or ... 4xx.latte
$this->setView(in_array($code, array(403, 404, 405, 410, 500)) ? $code : '4xx');
// log to access.log
Debugger::log("HTTP code $code: {$exception->getMessage()} in {$exception->getFile()}:{$exception->getLine()}", 'access');
} else {
$this->setView('500'); // load template 500.latte
Debugger::log($exception, Debugger::ERROR); // and log exception
}
}
}
Bootstrap.php
/**
* My Application bootstrap file.
*/
use Nette\Application\Routers\Route;
// Load Nette Framework
require LIBS_DIR . '/Nette/loader.php';
// Configure application
$configurator = new Nette\Config\Configurator;
// Enable Nette Debugger for error visualisation & logging
//$configurator->setProductionMode($configurator::AUTO);
$configurator->enableDebugger(__DIR__ . '/../log');
// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
->addDirectory(APP_DIR)
->addDirectory(LIBS_DIR)
->register();
// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$container = $configurator->createContainer();
// Setup router
$container->router[] = new Route('//s.example.com/<presenter>/<action>[/<id>]', array(
'module' => 'Secured',
'presenter' => 'Overview',
'action' => 'default',
'id' => NULL
), Route::SECURED);
$container->router[] = new Route('//[<module>.]example.com/<presenter>/<action>[/<id>]', array(
'module' => 'Public',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL
));
$container->application->catchExceptions = FALSE;
$container->application->errorPresenter = 'Error';
// Configure and run the application!
$container->application->run();
V případě, že tento řádek „$container->application->catchExceptions = FALSE;“ v bootstrapu není, tak mi nette na hostingu wedos hází chybu
config.neon
common:
parameters:
database:
driver: mysql
host: ***
dbname: ***
user: ***
password: ***
php:
date.timezone: Europe/Prague
nette:
session:
autoStart: smart
database:
default:
dsn: '%database.driver%:host=%database.host%;dbname=%database.dbname%'
user: %database.user%
password: %database.password%
services:
database: @Nette\Database\Connection
databaseModel:
class: Database
arguments: [@database]
authenticator: Authenticator( @database )
factories:
production < common:
development < common:
Editoval HosekPetr (30. 5. 2012 21:07)
- HosekPetr
- Člen | 31
v logu je
[2012-05-30 07-01-21] Nette\Application\BadRequestException: Cannot load presenter 'Www:Default', class 'WwwModule\DefaultPresenter' was not found in '/data/web/virtuals/23517/virtual/app/WwwModule/presenters/DefaultPresenter.php'. in /data/web/virtuals/23517/virtual/libs/Nette/Application/Application.php:123 @ http://www.hrejapoznej.cz/ @@ exception-2012-05-27-09-03-41-f0110433cbe2ad463f8f3b14b736efe8.html
Fakt si nevím rady! Log píše normální chybu, bude to muset bejt nějak špatně nastavené! :(