Nette 2.1 RC4 – Problém se SESSION a vypnutým ini_set()

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

Ahoj, s Nette teprve začínám.
Už jsem napsal jeden web ve verzi Nette 2.0.13 a po dlouhém experimentování se mi podařilo rozchodit web i na hostingu (cesky-hosting.cz), kde mají zakázanou funcki ini_set()

Nyní jsem se rozhodl předělat web na nejnovější verzi Nette (2.1 RC4), ale po předělání jsem zjistil, že při pokusu o nastartování SESSION dojde k vyjímce:

Nette\NotSupportedException
Required function ini_set() is disabled.

Zde ještě přikládám kompletní HTML stránku s exception :)
http://vymakdevel.cz/exception.html

Díky za případné rady jak to rozchodit :)

Editoval vymak (25. 12. 2013 21:18)

David Grudl
Nette Core | 8233
+
0
-

V té verzi 2.0.13 jsi měl nastavenou proměnnou Framework::$iAmUsingBadHost?

vymak
Člen | 92
+
0
-

Ano, měl jsem jí nastavenou, ale v nové verzi již není

Výpis bootstrap.php z verze 2.0.13

// Load Nette Framework or autoloader generated by Composer
require __DIR__ . '/../libs/autoload.php';

Nette\Framework::$iAmUsingBadHost = TRUE;
$configurator = new Nette\Config\Configurator;

// Enable Nette Debugger for error visualisation & logging
$configurator->setDebugMode(array('127.0.0.1'));
$configurator->enableDebugger(__DIR__ . '/../log');

// Specify folder for cache
$configurator->setTempDirectory(__DIR__ . '/../temp');

// Enable RobotLoader - this will load all classes automatically
$configurator->createRobotLoader()
    ->addDirectory(__DIR__)
    ->addDirectory(__DIR__ . '/../libs')
    ->register();

// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon', $configurator::NONE); // none section

$configurator->onCompile[] = function ($configurator, $compiler) {
    $compiler->addExtension('dibi', new DibiNetteExtension);
};
$container = $configurator->createContainer();

Výpis bootstrap.php z verze 2.1 RC4

// Load Nette Framework or autoloader generated by Composer
require __DIR__ . '/../libs/autoload.php';

$configurator = new Nette\Config\Configurator;

// Enable Nette Debugger for error visualisation & logging
$configurator->setDebugMode(array('127.0.0.1'));
$configurator->enableDebugger(__DIR__ . '/../log');

// Specify folder for cache
$configurator->setTempDirectory(__DIR__ . '/../temp');

// Enable RobotLoader - this will load all classes automatically
$configurator->createRobotLoader()
    ->addDirectory(__DIR__)
    ->addDirectory(__DIR__ . '/../libs')
    ->register();

// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon', $configurator::NONE); // none section

$container = $configurator->createContainer();

Editoval vymak (25. 12. 2013 21:50)

David Grudl
Nette Core | 8233
+
0
-

A stále používáš špatný hosting? :-) Ok, dal jsem tam podmínku, že ini_set se bude volat jen v nutných případech.

Jinak tohle je fakt spíš na řešení s adminem Českého hostingu (a ani to nezkoušej, je to bez šance) nebo na přechod jinam.

vymak
Člen | 92
+
0
-

Bohužel používám a ještě dlouho používat budu :D Mám to zaplaceno na 10 let (zakoupeno v akci).

Řešit s podporou jsem to už zkoušel ale jediné co mi doporučili tak přejít na virtuální server :D Časem ale stejně budu muset řešit přesun někam jinam, protože chci využívat veškeré možnosti Nette a to mi můj stavající hosting bohužel neumožňuje :(

Díky, a bylo by možné zaslat upravený soubor abych to mohl otestovat? :)

EDIT: Tak už jsem to našel na Githubu :) Jdu to otestovat :)

Editoval vymak (25. 12. 2013 22:00)

vymak
Člen | 92
+
0
-

Tak už jsem se trochu posunul, tentokrát trochu jiná chyba:
http://www.vymakdevel.cz/…ba02d3b.html

Výtah z config.neon

common:
	php:
		date.timezone: Europe/Prague
		# zlib.output_compression: yes

	nette:
		application:
			errorPresenter: Error

		debugger:
			email: muj@email.cz

		session:
			expiration: 14 days

	extensions:
		dibi: DibiNette21Extension

Když odstraním nastavení expirace session je chyba stejná akorát s jinou hodnotou:

Nette\NotSupportedException
Unable to set ‚session.gc_maxlifetime‘ to ‚10800‘ because function ini_set() is disabled.

David Grudl
Nette Core | 8233
+
+1
-

Přidej co configu za expiration ještě

nette:
	session:
		gc_maxlifetime: null
vymak
Člen | 92
+
0
-

Děkuji moc :) Už to funguje přesně tak jak má :)