expirce session Unable to set ‚session.gc_maxlifetime‘ to value ‚7776000‘ when session has been started

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
masterr
Začátečník | 141
+
0
-

celý error zde
Co dělám špatně? V bootstrap chci nastvit expiraci session.

frosty22
Člen | 373
+
0
-
  1. Celý error zde tam není
  2. Stačil by alespoň ten boostrap, kde to nastavuješ, předpokládám totiž, že jsi již předtím inicializoval session, proto již nastavit její vlastnosti nejde.

Edit: A nebo máš na serveru nastavený automatický start session (direktiva session.auto_start = 1)

Editoval frosty22 (16. 7. 2013 16:45)

masterr
Začátečník | 141
+
0
-

Právě že si myslím, že to nikde jinde neinicilizuju. Myslel jsem si, že to je tím, že jsem to tam přidal až po tom, co jsem session, už používal a tím pádem už byla ,,started". Tak jsem to zkoušel v jiným prohlížeči, ale stejná chyba. + jsem ještě zkoušel dát před to session_destroy();

Můj celý bootstrap:

use Nette\Application\Routers\Route;

// Load Nette Framework or autoloader generated by Composer
require LIBS_DIR . '/autoload.php';
require_once LIBS_DIR . '/dumper.php';

// Configure application
$configurator = new Nette\Config\Configurator;

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

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

// Create Dependency Injection container from config.ini file

$container = $configurator->addConfig(dirname(__FILE__) . '/config.neon')->createContainer();
dibi::connect( $container->params['dibi'] );




// Setup router
$container->router[] = new Route('index.php', array(
	'presenter' => 'Homepage',
	'action' => 'default',
), Route::ONE_WAY);

$container->router[] = new Route('admin/<presenter>/<action>/<id>/', array(
    'module' => 'Admin',
	'presenter' => 'Homepage',
	'action' => 'default',
	'id' => NULL,
));

$container->router[] = new Route('/<presenter>/<action>/<id>/', array(
    'module' => 'Front',
	'presenter' => 'Homepage',
	'action' => 'default',
	'id' => NULL,
));



// Session
$container->session->setExpiration('+ 90 days');
$container->session->setSavePath(__DIR__ . '/sessions');
$container->session->start();

// Configure and run the application!
$container->application->run();
frosty22
Člen | 373
+
0
-

Pravda, nic co by vytvářelo session předtím nevidím, zkus tedy zkontrolovat direktivu session start, tj:

<?php
var_dump(ini_get("session.auto_start"));
?>

A pokud by to vrátilo 1, pak bych zkusil v htaccess:

php_value session.auto_start 0
masterr
Začátečník | 141
+
0
-

Na to už jsem koukal v nastavení hostingu a mám nastaveno na off. Vrací to string(1) „0“, zkoušel jsem nastavovat ještě v configu podle nějaké návodu tady na foru, ale hází mi to

,,Found sections 'session' in configuration, but corresponding extensions are missing."

mám tam:

	session:
		setup:
			- setExpiration(1111111)

jak to nastavím v tom configu pro globální session?dík

Edit: ještě jsem zkoušel podle "":https://doc.nette.org/cs/configuring

	session:
		autoStart: true  # výchozí je smart
		expiration: "+ 10 days"
		name: 'PHPSESSID'

a i

	session:
		autoStart: true  # výchozí je smart
		expiration: "+ 10 days"

a pořád to samé

Edit2:

session:
  autoStart: smart
  gc_maxlifetime: 1209600

taky nejde

Editoval masterr (17. 7. 2013 9:58)

frosty22
Člen | 373
+
0
-

V konfiguračním souboru dost záleží na odsazení – aby to měl pod správnou sekcí, proto ti to předtím hodilo extension missing, jelikož to musíš mít pod Nette.

A direktivy PHP například session.name či session.gc_maxlifetime se nastavují přes sekci php

například:

common:
	php:
		date.timezone: Europe/Prague
		session.name: "SESSIONID"
		session.gc_maxlifetime: 7776000

	nette:
		session:
			expiration: 90 days
			autoStart: smart
			cookie_path: '/'
			cookie_domain: '.example.com'
frosty22
Člen | 373
+
0
-

BTW: Při testování, tak nezapomeň, že pokud vytvoříš SESSION například s platností 1 den, a potom přenastavíš tyhle hodnoty, tak to session neovlivní (krom tedy gc_maxlifetime, který by měl, ale ruku do ohně bych za to nedal).

V podstatě jednoduše, když jsem řešil podobné problémy a nastavování se SESSION, tak jsem musel vždy si raději mazat cookies před znovu otevřením/testem stránky, jelikož jinak mi to dost „blblo“.

masterr
Začátečník | 141
+
0
-

Paráda, dík za spolupráci! Už to jede.