Nastavení různých temp a cache adresářů dle prostředí
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- 2bfree
- Člen | 248
Zdravím,
kdysi
jsem řešil , kterak dosáhnout ukládání produkčního a vývojového
cache a temp do různých adresářů.
V předchozích verzích Nette se to nakonec dalo vyřešit velice jednoduše
v config.ini
[production < common]
variable.tempDir = %appDir%/temp/production
[development < common]
variable.tempDir = %appDir%/temp/development
V současnosti jsem se pokusil o config.neon
production < common:
variables:
tempDir: %systemRoot%/temp/production
development < common:
variables:
tempDir: %systemRoot%/temp/development
Ale narazil jsem na problém, že /Nette/common/Configurator.php inicializuje templateCahceStorage dříve, než zpracuje config.neon
Existuje tedy nějaký způsob, kterak ukládat cache a temp do adresáře dle prostředí?
Editoval 2bfree (11. 11. 2011 15:08)
- bojovyletoun
- Člen | 667
řešil bych to nějak takhle
<?php
use Nette\Diagnostics\Debugger,...;
$libs = __DIR__ . '/../../../libs';
require $libs . '/Nette/loader.php';
$cf = new \Nette\Configurator();
$c = $cf->container;
$c->params['libsDir'] = $libs;
$c->params['appDir'] = __DIR__;
$c->params['tempDir'] = __DIR__ . ($c->params['productionMode']? '/tempProd' : '/tempDeveloper');
- 2bfree
- Člen | 248
Díky za tip. Také mi to mohlo dojít. ;) Takže stávající řešení je:
<?php
// Load Nette Framework
require $params['libsDir'].DIRECTORY_SEPARATOR.'Nette'.DIRECTORY_SEPARATOR.'loader.php';
// Prepare system DI container
$configurator = new Nette\Configurator;
// Diferent temp dir for production environment
if($configurator->container->params['productionMode']==TRUE){
$params['tempDir'] = realpath($params['tempDir'].DIRECTORY_SEPARATOR.'Production');
} else {
$params['tempDir'] = realpath($params['tempDir'].DIRECTORY_SEPARATOR.'Development');
}
// Load params into system DI container
$configurator->container->params += $params;
?>