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

    Server windows e sessioni

    Ciao a tutti!
    Essendo nuova per prima cosa mi presento: sono Akasha, ho 22 anni e scarse conoscenze informatiche (qualche vago ricordo di scuola), ma quando serve mi ingegno e cerco di imparare.
    Proprio le mie scarse conoscenze mi portano qui.
    Vi spiego: i miei utilizzano nel loro lavoro un server con windows server 2003, su cui un tecnico ha recentemente installato anche apache 2.2 e php 5.2.17.
    Io, copiando ed adattando script trovati in rete e principalmente qui su html.it, ho creato una sorta di applicazione nella quale, dopo aver fatto un login, è possibile caricare e scaricare una serie di documenti.
    Niente di che, insomma, ma per noi è sufficiente.
    Il problema è che utilizzando questa applicazione sul mio computer (con un emulatore tipo Easyphp) funziona tutto benissimo, anche collegando il computer in rete e effettuando l'accesso da altri terminali, mentre, una volta trasferito tutto sul server il login non avviene.
    Il collegamento al database funziona, tanto che quando clicco su "accedi" mi dice "ciao Gianna, attendi il reindirizzamento", quindi trova la corrispondenza di username-password con il mio nome, però subito dopo torna nella pagina iniziale, come se non avessi fatto alcun login.
    Ho cercato ovunque e fatto vari tentativi e verifiche, che vi riassumo:
    il php.ini sul server e quello sul mio pc non hanno differenze per quanto riguarda le sessioni (tranne che nel parametro session.save_path), i cookie sono abilitati su tutti i computer da cui ho tentato l'accesso, il problema si presenta su tutti i browser che ho provato (safari, firefox, IE, chrome).
    La mia idea è che per qualche motivo non venga creata la sessione, infatti non viene aggiunta nella tabella del database preposta né viene creato alcun file nella cartella tmp.
    Quando accedo al phpmyadmin invece funziona tutto e viene creato un file relativo alla sessione nella cartella tmp.
    Io non penso che si tratti di un problema dello script per due motivi:
    1- l'ho copiato "pari-pari", cambiando solo i dati di accesso al database
    2- sul mio computer funziona sempre senza alcun problema.
    Penso che sia più che altro un qualche problema di impostazioni, ma non so proprio dove metter mano, è una cosa troppo complicata per me!
    Qualche anima gentile può darmi una mano?
    Grazie!
    Akasha

  2. #2
    Cosa c'è scritto nel file di LOG?

  3. #3
    Ciao, grazie della risposta!
    Se parli del file error.log nella cartella Apache /logs queste sono le righe dell'ultimo tentativo di accesso:
    codice:
    [Fri Jun 01 23:21:06 2012] [notice] Parent: Received restart signal -- Restarting the server. 
    [Fri Jun 01 23:21:06 2012] [notice] Child 3700: Exit event signaled. Child process is ending. 
    [Fri Jun 01 23:21:06 2012] [notice] Apache/2.2.22 (Win32) PHP/5.2.17 configured -- resuming normal operations 
    [Fri Jun 01 23:21:06 2012] [notice] Server built: Jan 28 2012 11:16:39 
    [Fri Jun 01 23:21:06 2012] [notice] Parent: Created child process 624 
    [Fri Jun 01 23:21:06 2012] [notice] Child 624: Child process is running 
    [Fri Jun 01 23:21:07 2012] [notice] Child 3700: Released the start mutex 
    [Fri Jun 01 23:21:07 2012] [notice] Child 624: Acquired the start mutex. 
    [Fri Jun 01 23:21:07 2012] [notice] Child 624: Starting 64 worker threads. 
    [Fri Jun 01 23:21:07 2012] [notice] Child 624: Starting thread to listen on port 81. 
    [Fri Jun 01 23:21:08 2012] [notice] Child 3700: All worker threads have exited. 
    [Fri Jun 01 23:21:08 2012] [notice] Child 3700: Child process is exiting
    Se non è questo il file a cui ti riferisci, per favore spiegami meglio qual è.

    Grazie mille
    Akasha

  4. #4
    Controlla allora le configurazioni del php.ini e la session savepath, penso che il problema sia li. (Forse permessi?)

  5. #5
    Ciao, puoi spiegarmi cosa cercare di preciso? Il file php.ini è lunghissimo e io non ne capisco molto!
    Comunque questa è la parte di php.ini che riguarda le sessioni:
    codice:
    [Session]
    ; Handler used to store/retrieve data.
    session.save_handler = files
    
    ; Argument passed to save_handler.  In the case of files, this is the path
    ; where data files are stored. Note: Windows users have to change this
    ; variable in order to use PHP's session functions.
    ;
    ; As of PHP 4.0.1, you can define the path as:
    ;
    ;     session.save_path = "N;/path"
    ;
    ; where N is an integer.  Instead of storing all the session files in
    ; /path, what this will do is use subdirectories N-levels deep, and
    ; store the session data in those directories.  This is useful if you
    ; or your OS have problems with lots of files in one directory, and is
    ; a more efficient layout for servers that handle lots of sessions.
    ;
    ; NOTE 1: PHP will not create this directory structure automatically.
    ;         You can use the script in the ext/session dir for that purpose.
    ; NOTE 2: See the section on garbage collection below if you choose to
    ;         use subdirectories for session storage
    ;
    ; The file storage module creates files using mode 600 by default.
    ; You can change that by using
    ;
    ;     session.save_path = "N;MODE;/path"
    ;
    ; where MODE is the octal representation of the mode. Note that this
    ; does not overwrite the process's umask.
    ; session.save_path = "c:\Inetpub\Temp"
    
    ; Whether to use cookies.
    session.use_cookies = 1
    
    ;session.cookie_secure = 
    
    ; This option enables administrators to make their users invulnerable to
    ; attacks which involve passing session ids in URLs; defaults to 0.
    session.use_only_cookies = 1
    
    ; Name of the session (used as cookie name).
    session.name = PHPSESSID
    
    ; Initialize session on request startup.
    session.auto_start = 0
    
    ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
    session.cookie_lifetime = 0
    
    ; The path for which the cookie is valid.
    session.cookie_path = /
    
    ; The domain for which the cookie is valid.
    session.cookie_domain =
    
    ; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
    session.cookie_httponly = 
    
    ; Handler used to serialize data.  php is the standard serializer of PHP.
    session.serialize_handler = php
    
    ; Define the probability that the 'garbage collection' process is started
    ; on every session initialization.
    ; The probability is calculated by using gc_probability/gc_divisor,
    ; e.g. 1/100 means there is a 1% chance that the GC process starts
    ; on each request.
    
    session.gc_probability = 1
    session.gc_divisor     = 1000
    
    ; After this number of seconds, stored data will be seen as 'garbage' and
    ; cleaned up by the garbage collection process.
    session.gc_maxlifetime = 1440
    
    ; NOTE: If you are using the subdirectory option for storing session files
    ;       (see session.save_path above), then garbage collection does *not*
    ;       happen automatically.  You will need to do your own garbage
    ;       collection through a shell script, cron entry, or some other method.
    ;       For example, the following script would is the equivalent of
    ;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
    ;          cd /path/to/sessions; find -cmin +24 | xargs rm
    
    ; PHP 4.2 and less have an undocumented feature/bug that allows you to
    ; to initialize a session variable in the global scope, albeit register_globals
    ; is disabled.  PHP 4.3 and later will warn you, if this feature is used.
    ; You can disable the feature and the warning separately. At this time,
    ; the warning is only displayed, if bug_compat_42 is enabled.
    
    session.bug_compat_42 = Off
    session.bug_compat_warn = Off
    
    ; Check HTTP Referer to invalidate externally stored URLs containing ids.
    ; HTTP_REFERER has to contain this substring for the session to be
    ; considered as valid.
    session.referer_check =
    
    ; How many bytes to read from the file.
    session.entropy_length = 0
    
    ; Specified here to create the session id.
    session.entropy_file =
    
    ;session.entropy_length = 16
    
    ;session.entropy_file = /dev/urandom
    
    ; Set to {nocache,private,public,} to determine HTTP caching aspects
    ; or leave this empty to avoid sending anti-caching headers.
    session.cache_limiter = nocache
    
    ; Document expires after n minutes.
    session.cache_expire = 180
    
    ; trans sid support is disabled by default.
    ; Use of trans sid may risk your users security.
    ; Use this option with caution.
    ; - User may send URL contains active session ID
    ;   to other person via. email/irc/etc.
    ; - URL that contains active session ID may be stored
    ;   in publically accessible computer.
    ; - User may access your site with the same session ID
    ;   always using URL stored in browser's history or bookmarks.
    session.use_trans_sid = 0
    
    ; Select a hash function
    ; 0: MD5   (128 bits)
    ; 1: SHA-1 (160 bits)
    session.hash_function = 0
    
    ; Define how many bits are stored in each character when converting
    ; the binary hash data to something readable.
    ;
    ; 4 bits: 0-9, a-f
    ; 5 bits: 0-9, a-v
    ; 6 bits: 0-9, a-z, A-Z, "-", ","
    session.hash_bits_per_character = 5
    
    ; The URL rewriter will look for URLs in a defined set of HTML tags.
    ; form/fieldset are special; if you include them here, the rewriter will
    ; add a hidden <input> field with the info which is otherwise appended
    ; to URLs.  If you want XHTML conformity, remove the form entry.
    ; Note that all valid entries require a "=", even if no value follows.
    url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
    Ora session.save_path è commentato perché da qualche parte ho letto di provare così (ma non funziona lo stesso), ma prima era impostato su C:/Inetpub/Temp.
    Per quello che ho saputo vedere questa cartella ha i permessi impostati su "controllo completo" per tutti gli utenti. Il mio dubbio è che magari un utente manchi del tutto, ma non so neppure se è possibile o se lo indicherebbe come utente senza permessi.
    Grazie ancora per l'aiuto!
    Akasha

  6. #6
    É una questione di permessi.
    É da un sacco che non lavoro con IIS, comunque mi ricordo che dovevo aggiungere un utente tipo IUSR_Guest perchè tutto funzionasse.

  7. #7
    Ho provato a controllare ancora una volta i permessi sulla cartella in cui vengono memorizzate le sessioni e sembra essere tutto giusto (tutti gli utenti hanno tutti i permessi su questa cartella, compreso un utente Guest).
    Inoltre, prima di leggere la tua risposta, avevo trovato in un post di un altro forum qualcuno con un problema simile al mio e gli avevano suggerito di creare uno script con questo codice
    codice:
    <?php
    session_start();
    $_SESSION['contatore']++;
    echo $_SESSION['contatore'];
    ?>
    per poi aggiornare la pagina più volte e vedere così se le sessioni vengono memorizzate (se il contatore si aggiorna si, altrimenti no).
    Ho provato a inserire questo file sul server nella stessa cartella in cui si trova la mia applicazione ed effettivamente il contatore si aggiorna, quindi sembra che le sessioni funzionino.
    Ma se il problema non è questo, è possibile che sia il codice ad essere sbagliato?
    Con l'emulatore funziona, ed ho provato anche sullo spazio web di un'amica (che ha un sito su server linux), e anche lì tutto ok.
    Cosa posso fare? Devo controllare i permessi su tutte le cartelle? E nel caso, cosa devo cercare?
    Oppure è possibile che ci sia una incompatibilità di qualche tipo?
    Io avevo capito che se il php gira su server apache non fa differenza che questo si trovi fisicamente su un server linux o windows... è sbagliato?
    Non so più cosa fare!
    Akasha

  8. #8

    Risolto!

    Un'amica che ha una ditta di servizi informatici (ed è per mia fortuna davvero brava) ha trovato il tempo di dare uno sguardo alla mia applicazione, e in mezz'ora ha risolto tutto!
    Mi ha spiegato che lo script di login che avevo copiato conteneva un errore, per cui restituiva sempre lo stato "loggato" anche quando c'erano problemi, e questo faceva sembrare che il login avvenisse correttamente e che il problema fosse successivo a questa fase.
    Invece il problema era precedente: oltre ad aprire la sessione lo script la registrava anche nel database per mantenere una traccia degli accessi, solo che alcuni campi della relativa tabella non avevano un valore di default e quindi, quando non venivano inseriti (sono campi che vengono aggiornati in seguito), la query non andava a buon fine e il login falliva.
    La mia amica ha impostato i valori di default di questi campi e corretto l'errore dello script, così ora funziona tutto alla perfezione!
    Mi scuso se la spiegazione è un po' confusionaria, ma non ho capito proprio tutto della spiegazione... non mi è neanche chiaro perché sul mio computer funzionasse tutto e sul server no, nonostante i due database fossero identici... comunque non importa: mi basta che ora sia tutto ok!
    In ogni caso grazie mille per l'aiuto!
    Akasha

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.