Cannot send session cache limiter – headers already sent

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

Zdravím, prosím o radu.

Aplikace na localu v pohode.
Na VPS dostavam tuto chybu.

Toto je presenter dane stranky. Jina to nedela, jen tato s formulářem.
Restartoval jsem server, chvili to bylo ok, ale pak znovu. Zkousel jsem session: autostart, false i true.

Napada prosím někoho něco?

Moc dekuji !

<?php

use Nette\Application\UI;

class RegistracePresenter extends BasePresenter {

    public function createComponentRegistrationForm($name) {
          	$form = new UI\Form($this,$name);

          	$form->addSubmit('send', 'Odeslat');

          	$form->addGroup('Přihlášovací údaje');
          	$form->addText('login', 'Login:', '25')
          		->setRequired('Zvolte si přihlašovací jméno.');
          	$form->addPassword('heslo', 'Heslo:', '25')
          		->setRequired('Vyplňte heslo !');
          	$form->addPassword('heslo2', 'Heslo pro kontrolu:', '25')
          		->setRequired('Vyplňte heslo pro kontrolu !')
          		->addRule(UI\Form::EQUAL, 'Hesla se neshodují.', $form["heslo"]);

          	$form->addGroup('O klubu');
          	$form->addText('jmeno', 'Vaše jméno:', '25')
          		->setRequired('Zadejte Vaše jméno.');
          	$form->addText('nazev_klubu', 'Název klubu:', '25')
          		->setRequired('Zadejte název klubu.');
          	$form->addText('url', 'URL stránek')
          		->setEmptyValue('http://')
          		->setRequired('Zadejte URL stránek.');
          	$form->addSelect('sporty_id', 'Sport:', $this->getModel('dataModel')->getData('sporty')->order('nazev')->fetchPairs('id', 'nazev'));

          	$form->addGroup('Případné platební údaje');
          	$form->addText('fakturacni_jmeno', 'Fakturační jméno', '25');
          	$form->addText('adresa', 'Adresa:', '25');
          	$form->addText('ic', 'IČ:', '25');
          	$form->addText('dic', 'DIČ:', '25');

                  $form->addGroup('Ochrana proti spamu');

                      \TextCaptcha\TextCaptcha::setSession(\Nette\Environment::getSession());
                      \TextCaptcha\TextCaptcha::setBackend(new \TextCaptcha\ArrayBackend());
                      \TextCaptcha\TextCaptcha::setLanguage("cs");

                  $form->addTextCaptcha();


          	$span = \Nette\Utils\Html::el('span', 'Souhlasím s ');
          	$href = \Nette\Utils\Html::el('a target=\'_blank\'', 'obchodními podmínkami')
          		->href($this->link('Podminky:'));
          	$terms = $span->add($href);
          	$form->addCheckbox('terms', $terms)
          		->setRequired('Souhlas');


          	$form->onSuccess[] = callback($this, 'registrationFormSubmitted');
          	return $form;
    }

    public function registrationFormSubmitted($form) {

          	$values = $form->getValues();
                  $values->role = 'user';
          	$values->od = date("Y-m-d");
          	$values->heslo = MD5($values->heslo);

          	unset($values->heslo2);
            unset($values->registrationFormantispamtextcaptcha);
          	unset($values->terms);

          	try {
          	    $this->getModel('dataModel')->saveData('kluby', $values);

          	} catch (Exception $e) {
                      If($e->getCode() == '23000') {
                      $form->addError('Login, název klubu nebo URL již existuje !');
                      }
                      else {
          	    $form->addError($e->getMessage());
                      }
          	}

          	if(!$form->hasErrors()){

                      //ulozeni licence na 14 dni pro novou registraci
                      $noveId = $this->getModel('dataModel')->getData('kluby')->select('LAST_INSERT_ID() AS nid')->fetch()->nid;
                      $ted = time();
                      $znacka = mktime(0, 0, 0, date('m', $ted), date('d', $ted) + 14, date('Y', $ted));
                      $this->getModel('dataModel')->saveData('licence', array('kluby_id' => $noveId, 'datum' => date('Y-m-d', $znacka)));

                      //inicializace nastaveni klubu
                      $this->getModel('dataModel')->saveData('kluby_nastaveni', array('kluby_id' => $noveId));

          	    $this->redirect('Info:message', array('message' => 'Registrace proběhla v pořádku.'));
          	}
          }

}
Jan Tvrdík
Nette guru | 2595
+
0
-

session autostart true ten problém řeší, zkus to znova

MW
Člen | 626
+
0
-

Stále stejny problem. Prikladam neon. Je nejaka moznost, jak ověřit, jestli se to nastavi spravne?
PHP direktiva v php.ini session_autostart mam na 0 .. ale to jsem mel na lokahostu taky.

config.neon :

common:
	php: # PHP configuration
		date.timezone: Europe/Prague
		# session.save_path: "%tempDir%/sessions"
		# zlib.output_compression: yes

	nette:
		session:
			autoStart: true

	services:
		robotLoader:
			run: true

		database:
			class: Nette\Database\Connection
			arguments: ['mysql:host=localhost;dbname=xxx', 'xxx', 'xxx']

		modelLoader:
			class: ModelLoader
			arguments: ["@database"]

		authenticator:
			class: Authenticator
			arguments: [kluby, @database]

		authorizator:
			class: acl
MW
Člen | 626
+
0
-

Tak dela to TextCaptcha.
Jak na to prosim? Delam to takto blbe?

Díky

\TextCaptcha\TextCaptcha::setSession(\Nette\Environment::getSession());
\TextCaptcha\TextCaptcha::setBackend(new \TextCaptcha\ArrayBackend());
\TextCaptcha\TextCaptcha::setLanguage("cs");

$form->addTextCaptcha();
MW
Člen | 626
+
0
-

Hral jsem si hral, az jsem zkusil do presenteru pridat

public function startup()
      	{
      	    parent::startup();
            if (!$this->session->isStarted()) {
            $this->session->start();
            }
      	}

A najednou je to bez chyby.
Tedy me evidentne asi nezafunguje v configu ten autostart.

Poradí někdo prosím, proc to tak muze byt nebo co mam blbe?

Diky moc !!!

MW
Člen | 626
+
+1
-

Nikdo prosím nevidí možnou chybu?

Díky !