expirce session Unable to set ‚session.gc_maxlifetime‘ to value ‚7776000‘ when session has been started
- frosty22
- Člen | 373
- Celý error zde tam není
- 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
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();
- masterr
- Začátečník | 141
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
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
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“.