Contributte translation odesle hlavicky?!
- Newer
- Člen | 47
Ahoj, mám problém, na localu vse ok, jakmile deploynu na server tak mám
následující chybu… tzn nelze se přihlásit, nejde odeslat mail z webu,
nejde nic. Zkoušel jsem na localu natavit ini_set(‚display_errors‘,
‚1‘); error_reporting(E_ALL); abych dostal stejnou chybu i tam ale
nelze..... Nějaká rada?
Translations jsem si nakonfiguroval podle dokumentace ofc.
PHP 7.4 (má to svůj důvod)
composer.json přikládám níže.
`ErrorException: The advice of session locale resolver is required but the
session has not been started and headers had been already sent. Either start
your sessions earlier or disable the SessionResolver. in
/data/web/virtuals/212676/virtual/www/domains/rejnok.fscreation.cz/vendor/contributte/translation/src/LocalesResolvers/Session.php:41
Stack trace:
#0 [internal function]: Tracy\Bar->Tracy\{closure}(512, ‚The advice of
s…‘, ‚/data/web/virtu…‘, 41, Array)
#1
/data/web/virtuals/212676/virtual/www/domains/rejnok.fscreation.cz/vendor/contributte/translation/src/LocalesResolvers/Session.php(41):
trigger_error(‚The advice of s…‘, 512)
#2
/data/web/virtuals/212676/virtual/www/domains/rejnok.fscreation.cz/vendor/contributte/translation/src/Tracy/Panel.php(100):
Contributte\Translation\LocalesResolvers\Session->resolve(Object(Contributte\Translation\Translator))
#3
/data/web/virtuals/212676/virtual/www/domains/rejnok.fscreation.cz/vendor/tracy/tracy/src/Tracy/Bar/Bar.php(145):
Contributte\Translation\Tracy\Panel->getPanel()
#4
/data/web/virtuals/212676/virtual/www/domains/rejnok.fscreation.cz/vendor/tracy/tracy/src/Tracy/Bar/Bar.php(117):
Tracy\Bar->renderPanels('')
#5
/data/web/virtuals/212676/virtual/www/domains/rejnok.fscreation.cz/vendor/tracy/tracy/src/Tracy/Bar/Bar.php(91):
Tracy\Bar->renderPartial(‚main‘)
#6
/data/web/virtuals/212676/virtual/www/domains/rejnok.fscreation.cz/vendor/tracy/tracy/src/Tracy/Debugger/DevelopmentStrategy.php(139):
Tracy\Bar->render(Object(Tracy\DeferredContent))
#7
/data/web/virtuals/212676/virtual/www/domains/rejnok.fscreation.cz/vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php(304):
Tracy\DevelopmentStrategy->renderBar()
#8 [internal function]: Tracy\Debugger::shutdownHandler()
#9 {main}`
`{
„name“: „nette/web-project“,
„description“: „Nette: Standard Web Project“,
„keywords“: [„nette“],
„type“: „project“,
„license“: [„MIT“, „BSD-3-Clause“, „GPL-2.0“,
„GPL-3.0“],
„require“: {
„php“: „>= 7.2“,
„nette/application“: „^3.1“,
„nette/bootstrap“: „^3.1“,
„nette/caching“: „^3.1“,
„nette/database“: „^3.1“,
„nette/di“: „^3.0“,
„nette/finder“: „^2.5“,
„nette/forms“: „^3.1“,
„nette/http“: „^3.1“,
„nette/mail“: „^3.1“,
„nette/robot-loader“: „^3.3“,
„nette/security“: „^3.1“,
„nette/utils“: „^3.2“,
„latte/latte“: „^2.11 || ^3.0“,
„tracy/tracy“: „^2.8“,
„contributte/translation“: „^0.8.3“
},
„require-dev“: {
„nette/tester“: „^2.3“,
„symfony/thanks“: „^1“
},
„autoload“: {
„psr-4“: {
„App\\“: „app“
}
},
„minimum-stability“: „stable“,
„config“: {
„allow-plugins“: {
„symfony/thanks“: true
}
}
}
`
- Marek Bartoš
- Nette Blogger | 1280
Hlavičky automaticky odesílá server, pokud je už odeslaný nějaký
výstup.
Nejprve si tedy zjisti, zda se nějaký výstup neodesílá dřív než by
měl – v boostrapu si aktivuješ třídu Tracy\OutputDebugger
,
ta ti vypíše kde je první výstup.
Pokud se ti odesílá výstup ve správný okamžik (při renderu presenteru),
tak musíš zajistit, že se session nastartuje včas. Nejspíš by mělo
stačit nastavit session > autoStart: smart
– pokud session
už existuje, tak ji to spustí při startu appky.
Pokud nepomůže, budeš si muset start session nejspíš vynutit. Třeba
v base presenteru, přes Session service.
A používej prosím zvýrazňování kódu, nedá se to číst.
- Newer
- Člen | 47
Ahoj, diky za pomoc a za kod se omlouvam .....
zapl jsem si:
session:
debugger: true
kdyz přidám
autoStart: true
tak chyba z tracy zmizí…
Ale sessions které vytvoří jsou prázdné,
na ftp do sessions se uloží session… a obsah je
__NF|a:3:{s:4:"Time";i:1687802326;s:4:"DATA";a:2:{s:48:"Contributte\Translation\LocalesResolvers\Session";N;s:23:"Nette.Http.UserStorage/";N;}s:4:"META";a:0:{}}
přijde mi že contributte/translation extenze tam dělá nějakou neplechu, ale nejsem schopnout debugnout kde…
Editoval Newer (26. 6. 2023 20:05)
- Marek Bartoš
- Nette Blogger | 1280
@Newer https://github.com/…/Session.php#L39
Zkus do téhle metody přidat na začátek:
if(!$this->session->exists()) {
return null;
}
A potom smaž cookies a zkus to znova, bez autoStart: smart
.
Mělo by to zajistit, že se session nevytvoří, pokud neexistuje.
A dej vědět, zda to v tvém případě zafungovalo.
- Newer
- Člen | 47
config:
session:
expiration: 14 days
debugger: true
extensions:
translation: Contributte\Translation\DI\TranslationExtension
translation:
locales:
whitelist: [cs]
default: cs
fallback: [cs_CZ]
dirs:
- %appDir%/lang
BasePresenter
/** @var Nette\Localization\ITranslator @inject */
public $translator;
/** @persistent */
public $locale;
.
.
.
.
protected function startup()
{
parent::startup();
if (!$this->getUser()->isAllowed($this->getName(), $this->getAction())) {
if ($this->user->logoutReason === Nette\Security\IUserStorage::INACTIVITY) {
$this->flashMessage($this->translator->translate('flashMessage.logoutInactivity'), self::MSG_INFO);
}
$this->flashMessage($this->translator->translate('flashMessage.notLoggedIn'), self::MSG_ERROR);
$this->redirect(':Core:Sign:signIn', ['backlink' => $this->storeRequest()]);
}
}
.
.
.
.
.
public function beforeRender()
{
parent::beforeRender();
$this->template->menuHeader = $this->articleManager->getHeader($this->presenter->getAction());
$this->template->locale = 'cs';
$this->template->menu = $this->articleManager->getUrls();
$this->template->menuCat = $this->articleManager->getMenuCategory();
}
....
- Marek Bartoš
- Nette Blogger | 1280
Jestliže session neexistuje, tak ta metoda s mou změnou nic neudělá. Nespustí session (ani s autostart), ani nevypíše chybu. Takže už musí existovat z předchozích requestů a jen se spustí nebo ji v aktuálním requestu vytváří a spouští něco jiného.