Nastavení produkčního módu na základě url adresy
- 2bfree
- Člen | 248
Zdarvím,
v předchozí verzi Nette jsem měl v bootstrap.php takovouhle zběsilou záležitost
<?php
/**
* Loading nette framework
*/
require(LIBS_DIR.DS.'Nette'.DS.'nette.min.php');
/**
* Development workaround
*/
if(($_SERVER['SERVER_NAME']=="project-prod.localhost")&&($_SERVER["SERVER_ADDR"]=="127.0.0.1")){
Nette\Environment::setMode(Nette\Environment::DEVELOPMENT,FALSE);
Nette\Environment::setMode(Nette\Environment::PRODUCTION,TRUE);
Nette\Environment::setName('production');
}
/**
* Loading config
*/
Nette\Environment::loadConfig();
/**
* Setting Debug
*/
if(Nette\Environment::getName()=='development'){
NetteTranslator\Panel::register();
Nette\Debug::$strictMode = TRUE;
Nette\Debug::enable(Nette\Debug::DEVELOPMENT,Nette\Environment::getVariable("logDir"));
} elseif(Nette\Environment::getName()=='production'){
Nette\Debug::$strictMode = FALSE;
Nette\Debug::enable(Nette\Debug::PRODUCTION,Nette\Environment::getVariable("logDir"), Nette\Environment::getVariable('technicalSupportEmail'));
}
?>
Díky tomu jsem mohl na svém vývojovém stroji testovat, jak se chová
aplikace na produkčním prostředí.
Dnes už se to takhle dělat nedá. Chci se tedy zeptat:
- jak se nastavuje produkční prostředí
- jak se správně dotazuje v jakém jsem prostředí
- 22
- Člen | 1478
Mám takový pocit, že sice jsi v sekci DI, ale nepřečtl jsi o tom ani jedno slovo tady, jinak by ses asi takhle neptal. Takže pro začátek si projdi sandbox z poslední bety a pak ti bude jasný kod níže:
//v bootsrapu si zkus:
echo $configurator->container->params['productionMode'];
dump($configurator->container->params);
Editoval 22 (9. 11. 2011 12:43)
- 2bfree
- Člen | 248
Docela hodně jsem o tom četl všude možně. Sandboxem jsem se probral a
o existenci
$configurator->container->params[‚productionMode‘] vím.
Nevěděl jsem však, zda-li je to dnes jediný a tedy oficiálně správný způsob detekce prostředí, nebo jestli existuje někde getMode setMode.
- 2bfree
- Člen | 248
Takže pro úplnost, kdyby někdo řešil stejný problém jako já, tak bootstrap.php v nové podobě vypadá takto:
<?php
use Nette\Diagnostics\Debugger,
Nette\Application\Routers\Route;
// Load Nette Framework
$params['libsDir'] = __DIR__ . '/../libs';
require $params['libsDir'] . '/Nette/loader.php';
// Load configuration from config.neon file
$configurator = new Nette\Configurator;
$configurator->container->params += $params;
$configurator->container->params['tempDir'] = __DIR__ . '/../temp';
$container = $configurator->loadConfig(__DIR__ . '/config.neon');
// Development workaround
if(($_SERVER['SERVER_NAME']=="project-prod.localhost")&&($_SERVER["SERVER_ADDR"]=="127.0.0.1")){
$configurator->container->params['productionMode']=TRUE;
}
// Enable Nette Debugger for error visualisation & logging\
if($configurator->container->params['productionMode']){
Debugger::$strictMode = TRUE;
Debugger::enable(Debugger::PRODUCTION, __DIR__ . '/../log',$configurator->container->params['technicalSupportEmail']);
} else {
Debugger::$strictMode = TRUE;
Debugger::enable(Debugger::DEVELOPMENT, __DIR__ . '/../log');
}
// Setup router
$router = $container->router;
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
// Configure and run the application!
$application = $container->application;
//$application->catchExceptions = TRUE;
$application->errorPresenter = 'Error';
$application->run();
?>