Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Fatal error: session_start()

    Salve, scrivo questo post per chiedere un'informazione inerente questo
    messaggio di errore che a volte mi compare su un mio script (ovviamente PHP, ... altrimenti ...)

    Fatal error: session_start(): Failed to initialize storage module: user
    (path: /tmp) in /[base_dir]/[file.php] on line 55

    la linea 55 corrisponde alla linea della funzione "session_start();"

    Inoltre prima della linea 55 ci sono esclusivamente commenti ed inclusioni
    di file di configurazione che non danno output.

    Da cosa può essere dovuto?

    Premetto:
    PHP 4.4.0
    Apache 1.3.33
    Ambiente Linux
    register_global = off tramite una regola nel file .htaccess

    Ciao Valentino

  2. #2
    Prima di tutto grazie per la risposta!

    Difatti l'errore compare ogni tanto, la soluzione è di premere un bel F5.

    La directory dove vengono memorizzate le session, è /tmp ... ed esiste!

    In merito al fatto di spostare la funzione
    codice:
    session_start()
    più su, come riga nello script, non credo sia necessario, in quanto la prima parte sono solo commenti ed un paio di include di configurazione.

    Sono alla disperata attesa di una mente superiore alla mia mi illumini su questi eventi!

    Ciao Valentino!

  3. #3
    Il problema in questione risiede nell'archiviazione ("storage") della sessione.

    Nell'esempio riportato da un utente nel BUG Track di PHP.net
    codice:
    1: session_set_save_handler (...)
    2: session_start ()
    3: session_destroy ()
    4: session_start()
    qui si riapre una sessione (4) dopo ch'è stata rimossa (3), previa inizializzazione della funzione di gestione delle stesse sessioni (1).

    Premo a precisare che non sono un Esperto.

    http://cvs.php.net/co.php/php-src/ex...c?r=1.336.2.50

    codice:
    	/* Open session handler first */
    	if (PS(mod)->s_open(&PS(mod_data), PS(save_path), PS(session_name) TSRMLS_CC) == FAILURE) {
    		php_error_docref(NULL TSRMLS_CC, E_ERROR, "Failed to initialize storage module: %s (path: %s)", PS(mod)->s_name, PS(save_path));
    		return;
    	}
    andando alla riga 639, si trova il codice gestisce proprio questo errore.

    Il problema, probabilmente è causato dalla perdita del SID (PHPSESSID), che da anche il nome alla sessione.

    Dato che il SID, quando non viene passato tramite le variabili di POST o GET, viaggia (probabilmente) con le variabili GLOBALI, che a loro volta se la chiave del php.ini o del .htaccess è impostata ad off (register_global = off | php_flag register_globals off), queste non vengono inizializzate, e quindi potrebbe verificarsi questo errore.

  4. #4
    L'errore e' dovuto proprio al fatto che non c'e' il session_id # e quindi non si puo' inizializzare un file di sessione.

    Dopo un session destroy devi uscire dallo script per rendere effettiva la distruzione.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    La seguenza del mio script è la seguente:
    codice:
             [Inizio]---------------------<-------
                 |_[session_start();]             |
                 |                                |
     [Sei un utente Autenticato?]____[NO]         |
                 |                     |          |
                [SI]              [Autenticati]___|
                 |
                 |
      [Hai richiesto il LogOut?]___________[NO]
                 |                           |
                [SI]                         |
                 |                           |
       [$_SESSION = Array();]                | 
        [session_destroy();]                 |
                 |                           |
               [FINE]                    [Lavora!!!]
    Su per giù è questa la sequenza di lavoro del mio script.
    Dalle mie infime conoscenze, il session_id() si inserisce subito dopo il session_start(), altrimenti non genera/imposta alcun SID.

    In questo modo, dovrei modificare tutti i link e/o form della mio pannello, per includere al link il SID?

    Grazie per lo spunto!

  6. #6
    Tipicamente quell'errore puo' nascere da permessi insufficienti per scrivere il file (es. un classico dopo l'installazione di MAMBO), oppure si tenta di inizializzare un file di sessione senza avere ottenuto un id di sessione da session_start().

    Il Session ID viene attivato con session_start(). Se il browser ha un cookie di sessione viene letto e il valore del SID cercato nel nome del file di sessione non scaduti per inattivita'.

    Se il valore esiste ed e' valido viene recuperato, altrimenti ne viene assegnato uno nuovo. Se distruggi la sessione occorre uscire dallo script in modo da invalidare il cookie e far scadere il file.

    e fin qui e' acqua cotta. Nel tuo schema se hai un exit dopo session_destroy il problema potrebbe essere nei permessi. Verifica se succede sempre con un determinato user.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.