Nefunkční nastavení defaultní timezone v config.ini
- Petr Mašát
- Člen | 101
Ahoj všichni,
omlouvám se asi za hloupý dotaz, ale už to řeším druhý večer a prolezl
jsem snad už všechny fóra jenž tu byli a nikde jsem nenalezl přesně to co
hledám.
Mám problém s nastavením defaltní timezone v souboru config.ini,
kde i když nastavím
[common]
php.date.timezone = "Europe/Prague"
tak mi stránka padne do chyby a v logu se objeví
[2010-04-13 23-20-32] PHP Fatal error: Uncaught exception 'FatalErrorException' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead' in /home/www/aikidohostivar.cz/public_html/beta/libs/Nette/loader.php:4164
Jediné jak to obejít je dát do bootstrap.php na začátek deklaraci
date_default_timezone_set('Europe/Prague');
ale to mi přijde docela jako prasárna. Netuší někdo pls. kde dělám chybu?
Díky moc,
Petr MAŠÁT
Editoval tachyon (13. 4. 2010 23:33)
- marek.dusek
- Člen | 99
A nemáš v bootstrapu před Environment::loadConfig() něco jiného, co ti na nějaký datum sáhne?
EDIT: Teď se dívám, že ti to vyhodil už loader.php, který je předpokládám to první, co v bootstrapu je. Takže jinak – nevím, jestli to něco řeší, ale možná záleží na pořadí v configu, aby to bylo co nejvíc nahoře? I když to uř je velká divočina ;)
A temp si smazat zkoušel? ;)
Editoval marek.dusek (13. 4. 2010 23:43)
- Petr Mašát
- Člen | 101
V tom loader.php to bylo proto že jsem použil nette minified. Náhrál jsem tam nekompresenou verzi a nyní je zápis v logu:
[13-Apr-2010 23:54:20] PHP Fatal error: Uncaught exception 'FatalErrorException' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead' in /home/www/aikidohostivar.cz/public_html/beta/libs/Nette/Tools.php:70
Stack trace:
#0 [internal function]: Debug::_errorHandler(2048, 'DateTime::__con...', '/home/www/aikid...', 70, Array)
#1 /home/www/aikidohostivar.cz/public_html/beta/libs/Nette/Tools.php(70): DateTime->__construct('+ 30 minutes')
#2 /home/www/aikidohostivar.cz/public_html/beta/libs/Nette/Web/User.php(204): Tools::createDateTime('+ 30 minutes')
#3 /home/www/aikidohostivar.cz/public_html/beta/app/presenters/BasePresenter.php(52): User->setExpiration('+ 30 minutes')
#4 /home/www/aikidohostivar.cz/public_html/beta/libs/Nette/Application/Application.php(138): BasePresenter->__construct()
#5 /home/www/aikidohostivar.cz/public_html/beta/app/bootstrap.php(75): Application->run()
#6 /home/www/aikidohostivar.cz/public_html/beta/document_root/index.php(13): require('/home/www/aikid...')
#7 {main}
posílám rovnou i to jak je nyní napsán config.ini:
[common]
php.date.timezone = "Europe/Prague"
php.iconv.internal_encoding = "%encoding%"
php.mbstring.internal_encoding = "%encoding%"
php.include_path = "%appDir%;%libsDir%"
variable.tempDir = %appDir%/cache
[development]
database.driver = postgre
database.host = "localhost"
database.username = "postgres"
database.password = "****"
database.database = "template1"
database.lazy = TRUE
database.charset = utf8
database.result:objects = TRUE
service.Nette-Security-IAuthenticator = Users
service.Nette-Security-IAuthorizator = Permission
[production < development]
database.host = "pg1.tojeono.cz"
database.username = "aikidohostivarcz"
database.password = "****"
database.database = "aikidohostivarcz"
Nikde jinde s nastavováním timezone nic nedělám.
Pro jistotu jsem ještě nyní stáhl aktuální stabilní verzi nette a hodil
to tam, jestli jsem někde něco nezmšil a bohužel ne : (
Vtipné na tom je že na lokále mi to funguje, ale jakmile to hodím na server tak je zle. Nemůže to být nějaký nastavením serveru?
Editoval tachyon (14. 4. 2010 0:04)
- marek.dusek
- Člen | 99
Tady je vidět, že to spadne až po volání application->run() – máš před tím v bootstrapu explicitní načtení configu, tj. něco jako Environment::loadConfig()?
- Petr Mašát
- Člen | 101
Ahoj,
Environment::loadConfig();
jsem v bootstrap.php neměl. Přidal jsem to rovnou za volání
require LIBS_DIR . '/Nette/loader.php';
ale bohužel nepomohlo. Pořád ta stejná hláška. Nahrál jsem celý projekt na http://data.aikidohostivar.cz/beta.zip – prosím nekamenuj mě za kód, teprve se učím : )
- David Grudl
- Nette Core | 8218
Změň [development]
na [development < common]
,
jinak se ti sekce common vůbec nenačte.
- Petr Mašát
- Člen | 101
Změnil jsem config.ini na
[common]
php.date.timezone = "Europe/Prague"
php.iconv.internal_encoding = "%encoding%"
php.mbstring.internal_encoding = "%encoding%"
php.include_path = "%appDir%;%libsDir%"
variable.tempDir = %appDir%/cache
[development < common]
database.driver = postgre
database.host = "localhost"
database.username = "postgres"
database.password = "***"
database.database = "template1"
database.lazy = TRUE
database.charset = utf8
database.result:objects = TRUE
service.Nette-Security-IAuthenticator = Users
service.Nette-Security-IAuthorizator = Permission
[production < development]
database.host = "pg1.tojeono.cz"
database.username = "aikidohostivarcz"
database.password = "***"
database.database = "aikidohostivarcz"
bohužel žádná změna k lepšímu : (
- David Grudl
- Nette Core | 8218
Aha, déle než rok hlášený bug. Nastavení funkcí má vyšší prioritu. Fixed.
- Petr Mašát
- Člen | 101
Super, alespoň si nepřipadám jako totální blbec jenž něco přehlédl :
)
Dáš prosím tě tuhle opravu do Nightly Builds verze nette? A nebo
mohu si někde jinde sosnout opravenou verzi?
Díky moc.
- Endrju
- Člen | 147
Mám také problém na toto téma a nevím si rady. Když načtu stránku, zobrazí se:
Strict Standards: DateTime::__construct() [datetime.--construct]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in D:\webserver\aaa\libs\Nette\Utils\Tools.php on line 69
Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in D:\webserver\aaa\libs\Nette\Utils\Tools.php on line 66
Strict Standards: DateTime::__construct() [datetime.--construct]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in D:\webserver\aaa\libs\Nette\Utils\Tools.php on line 66
Používám Nette 0.9.6 a PHP 5.2.11
V config.ini mám nastaveno:
[common]
; PHP configuration
php.date.timezone = "Europe/Prague"
php.iconv.internal_encoding = "UTF-8"
php.mbstring.internal_encoding = "UTF-8"
;php.default_charset = "UTF-8"
...
A bootstrap.php začíná takto:
require LIBS_DIR . '/Nette/loader.php';
$session = NEnvironment::getSession();
$session->setExpiration("+ 14 days");
$session->setSavePath(APP_DIR . '/../tmp/');
if (!$session->isStarted()) { $session->start(); }
Chybu to začalo vypisovat až po tom co jsem přídal do bootsrapu
řádek $session->setExpiration("+ 14 days");
Děkuji za pomoc !