Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-10-2009 16:18:05

lil-works
Membre
Date d'inscription: 10-09-2009
Messages: 40

Zend_Application et Zend_Session - Ceci est un appel au secour!

Bonjour,

Je m'en remet à la communauté car je vais péter un plomb à force de tourner en rond.

J'essai d'utiliser Zend_Application et la classe Zend_Application_Bootstrap_Bootstrap.

Mon problème se situe au niveau de la session. Je n'arrive pas à la démarrer (Zend_Session::start()) sans avoir l'erreur:
Uncaught exception 'Zend_Session_Exception' with message 'Session must be started before any output has been sent to the browser; output started in "mon fichier index/1"

Pourtant je la demarre avant le reste juste après _initDb car ma session utilise Zend_Session_SaveHandler_DbTable

Merci pour votre aide

Voici mon bootstrap.php

Code:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    
    public function _initAcl()
    {
        $acl = new My_Acl_Ini( APPLICATION_PATH . '/configs/acl.ini');
        return $acl;
    }

    public function _initSession()
    {
        $session = $this->getPluginResource('session');
        Zend_Session::start();
    }
}

et le index.php

Code:

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH',
              realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV',
              (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
                                         : 'production'));

// Typically, you will also want to add your library/ directory
// to the include_path, particularly if it contains your ZF installed
set_include_path(implode(PATH_SEPARATOR, array(
    dirname(dirname(__FILE__)) . '/library',
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';
    
// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);


$application->bootstrap()
            ->run();

Mon fichier application.ini

Code:

[production]
# php
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

# php includes path
includePaths.library = APPLICATION_PATH "/../library"

# bootstrap
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

# Autoload namespaces
autoloadernamespaces[] = "My_"

# resources
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

# Resources
# db
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.username = "zend"
resources.db.params.password = ""
resources.db.params.dbname = "zend"
resources.db.isDefaultTableAdapter = true

# session
resources.session.save_path = APPLICATION_PATH "/logs"
resources.session.use_only_cookies = true
resources.session.remember_me_seconds = 864000
resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable"
resources.session.saveHandler.options.name = "session"
resources.session.saveHandler.options.primary.session_id = "session_id"
resources.session.saveHandler.options.primary.save_path = "save_path"
resources.session.saveHandler.options.primary.name = "name"
resources.session.saveHandler.options.primaryAssignment.sessionId = "sessionId"
resources.session.saveHandler.options.primaryAssignment.sessionSavePath = "sessionSavePath"
resources.session.saveHandler.options.primaryAssignment.sessionName = "sessionName"
resources.session.saveHandler.options.modifiedColumn = "modified"
resources.session.saveHandler.options.dataColumn = "session_data"
resources.session.saveHandler.options.lifetimeColumn = "lifetime"

Dernière modification par lil-works (07-10-2009 16:43:23)

Hors ligne

 

#2 07-10-2009 19:08:13

ami
Membre
Lieu: Nantes
Date d'inscription: 28-03-2007
Messages: 45
Site web

Re: Zend_Application et Zend_Session - Ceci est un appel au secour!

Et avec ce code ?

Code:

public function _initSession()
    {
        $this->bootstrap('session');
        $session = new Zend_Session_Namespace( 'xxxxx' ); /*Zend_Session_Namespace démarre la session PHP*/
    }

Ami

Hors ligne

 

#3 07-10-2009 21:02:45

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Zend_Application et Zend_Session - Ceci est un appel au secour!

@lil-works :
le message "output started in "mon fichier index/1" " t'indique le fichier qui envoie des caractères avant que tu ne cherches  à ouvrir ta session (et même le No de ligne je crois).

Va voir dans ce fichier si tu n'as pas :
- un retour à la ligne ou un espace avant "<?php" ou après "?>"
- regarde si tu n'as pas une erreur renvoyée (une notice, un warning ou un truc du genre).

(le principe est qu'un cookie est envoyé dans des headers http. Quand tu envoies un caractère vers le navigateur, PHP referme les headers HTTP et renvoie le caractère, tu ne peux plus modifier les headers => plus de cookie => plus d'ouverture de session possible)

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 09-10-2009 23:02:07

lil-works
Membre
Date d'inscription: 10-09-2009
Messages: 40

Re: Zend_Application et Zend_Session - Ceci est un appel au secour!

Merci pour vos réponses...

Philippe... Tu avais raisons c'etait un espace avant le <?php du index.php
Perdre autant de temps pour un ptit truc comme ça!

Un grand merci

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages