Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    Errore stranissimo... problema del php.ini ?

    Dunque...
    ho un server che ho dovuto reimpostare da 0.
    Ho copiato tutti i database, dato i permessi agli utenti ecc.
    Sembra funzionare tutto eccetto alcune pagine php (che prima funzionavano).
    La cosa strana è che gli script contenuti nelle pagine che non funzionano sono pressocchè molto similari ad altri di altre pagine. L'unica differenza è che le pagine funzionanti vanno bene (interrogazioni php-mysql ecc), mentre quando accedo in determinate pagine in output non da nulla... (schermo completamente bianco).

    Allora ho cercato di farmi un debug per vedere a che punto lo script si blocca...
    e ho visto che proprio nelle prime righe smette di funzionare:
    Codice PHP:
    <?php 
    if( !is_array$_SESSION ) ) session_start() or die('1'); // fixa qualora session non sia stata instanziata: nelle pagine in cui è richiesta login-psw session_start() è dentro il require sess.php -> in caso contrario la faccio partire qui.
    require "include/conn.php" or die('2');
    die( 
    '2' );
    se metto die(qualcosa) prima di if( !array il die funziona
    se lo metto subito dopo funziona ancora
    se lo metto dopo il primo require, ritorna lo schermo bianco senza nessun messaggio...

    Il problema è che quelle righe che ho riportato qui sono anche in altre pagine, senza generare alcun problema. Qualcuno ha un'idea?
    わさび

  2. #2
    $_SESSION e' visibile solo se sei membro della sessione.

    In pratica ti becchi un NOTICE perche' $_SESSION non esiste e ora hai i NOTICE abilitati ma non hai abilitato la stampa degli errori....

    correggi lo script in questo modo:
    Codice PHP:
    <?php
    if( !isset( $_SESSION ) ) .......

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

  3. #3
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da piero.mac
    $_SESSION e' visibile solo se sei membro della sessione.

    In pratica ti becchi un NOTICE perche' $_SESSION non esiste e ora hai i NOTICE abilitati ma non hai abilitato la stampa degli errori....

    correggi lo script in questo modo:
    Codice PHP:
    <?php
    if( !isset( $_SESSION ) ) .......
    Ciao piero.mac,
    Non va... e ho anche aggiunto all'inizio
    error_reporting(E_ALL);
    però sempre schermo bianco
    わさび

  4. #4
    Originariamente inviato da Trinità76
    Ciao piero.mac,
    Non va... e ho anche aggiunto all'inizio
    error_reporting(E_ALL);
    però sempre schermo bianco
    cerca di isolare il problema.... l'errore potrebbe essere nella pagina che includi. La pagina bianca e' tipica di quando si riscontra un errore e la stampa non e' abilitata.

    per isolare l'errore metti un echo "pippo" al posto del require, almeno capisci da dove arriva il problema

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

  5. #5
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da piero.mac
    cerca di isolare il problema.... l'errore potrebbe essere nella pagina che includi. La pagina bianca e' tipica di quando si riscontra un errore e la stampa non e' abilitata.

    per isolare l'errore metti un echo "pippo" al posto del require, almeno capisci da dove arriva il problema
    Credo di aver capito... almeno in parte.

    Dunque facendo come mi hai consigliato ho eliminato un primo errore... ma poi più avanti nella pagina mi da di nuovo lo stesso problema
    Codice PHP:
    if( !isset( $_SESSION ) ) session_start();
    require 
    "includephp/_miofile_.php";
    require 
    "includephp/_miofile_.php";
    require 
    "includephp/_miofile_.php";
    require 
    "includephp/_miofile_.php";
    // fin qui ok 
    ma qual'è il settaggio del php.ini che "lascia passare" gli errori di un certo tipo eseguendo la pagina? In effetti, lo script non funziona in locale sul nuovo server, ma online funziona... :master:
    わさび

  6. #6
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Dunque, il punto in cui lo script si blocca è quando chiamo una classe in questo modo

    codice:
    var = miaclasse::funzione( param1, param2, param3, param4 );
    la classe è fatta più o meno in questo modo:

    Codice PHP:
    class miaclasse{
        
    // [Member variables]
        
    var $dbResource;
        var 
    $dbName '';
        
    // bla, bla, bla
        // bla, bla, bla
        // bla, bla, bla
        
    function funzione( &$dbResource$dbName$param ){
            if( 
    is_resource$dbResource ) ){
                
    $this->dbResource = &$dbResource;
                
    $this->dbName = &$dbName;
    //... ... 
    ho letto nel php.ini questo:
    ; - allow_call_time_pass_reference = Off [Code cleanliness]
    ; It's not possible to decide to force a variable to be passed by reference
    ; when calling a function. The PHP 4 style to do this is by making the
    ; function require the relevant argument by reference.

    ; Whether to enable the ability to force arguments to be passed by reference
    ; at function call time. This method is deprecated and is likely to be
    ; unsupported in future versions of PHP/Zend. The encouraged method of
    ; specifying which arguments should be passed by reference is in the function
    ; declaration. You're encouraged to try and turn this option Off and make
    ; sure your scripts work properly with it in order to ensure they will work
    ; with future versions of the language (you will receive a warning each time
    ; you use this feature, and the argument will be passed by value instead of by
    ; reference).
    allow_call_time_pass_reference = Off
    potrebbe dipendere da questo?
    [edit] in effetti anche mettendolo su On lo script non va lo stesso
    わさび

  7. #7
    Originariamente inviato da Trinità76
    ma qual'è il settaggio del php.ini che "lascia passare" gli errori di un certo tipo eseguendo la pagina? In effetti, lo script non funziona in locale sul nuovo server, ma online funziona... :master:
    gli errori non passano proprio. Possono essere segnalati oppure no. Se non sono segnalati lo script si blocca e non viene inviato nulla al browser e di qui la pagina bianca.

    Prova a settare nel php.ini

    error_reporting = E_ALL
    display_errors = On

    in locale puo' essere molto comodo rivedere gli errori e quindi io faccio pure:

    display_startup_errors = On
    log_errors = On
    log_errors_max_len = 1024
    error_log = e:\php_error_log\php_error_log.txt

    il file di log deve esistere.

    poi restarta apache ovviamente.

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

  8. #8
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da piero.mac
    gli errori non passano proprio. Possono essere segnalati oppure no. Se non sono segnalati lo script si blocca e non viene inviato nulla al browser e di qui la pagina bianca.

    Prova a settare nel php.ini

    error_reporting = E_ALL
    display_errors = On

    in locale puo' essere molto comodo rivedere gli errori e quindi io faccio pure:

    display_startup_errors = On
    log_errors = On
    log_errors_max_len = 1024
    error_log = e:\php_error_log\php_error_log.txt

    il file di log deve esistere.

    poi restarta apache ovviamente.
    grazie piero.mac,
    avevo appeno notato l'opzione display_errors e settandola su On
    in effetti sono usciti fuori gli errori:

    codice:
    Notice: Undefined variable: dbName in /home/__path__.php on line 18
    Notice: Undefined variable: dbName in /home/__path__.php on line 56
    Fatal error: Using $this when not in object context in /home/__path__.php on line 56
    thank you
    わさび

  9. #9
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Giusto per la cronaca ho dovuto fare così:
    Codice PHP:
    if( @!isset( $_SESSION ) ) session_start(); 
    altrimenti mi generava un altro notice quella riga
    Notice: Undefined variable: _SESSION in /home/.......
    わさび

  10. #10
    Originariamente inviato da Trinità76
    Giusto per la cronaca ho dovuto fare così:
    Codice PHP:
    if( @!isset( $_SESSION ) ) session_start(); 
    altrimenti mi generava un altro notice quella riga
    Notice: Undefined variable: _SESSION in /home/.......
    occhio che isset serve proprio ad evitare il NOTICE e l'operatore di controllo errori elimina la notifica. Ma il problema rimane.... $_SESSION e' visibile solo se hai eseguito session_start() ed hai messo dei dati nel file $_SESSION.

    Quindi rivedi il controllo nel senso dello scopo per cui lo hai messo. Se vuoi sapere se la sessione e' gia' attiva magari dovresti usare session_id(). Se false non e' attiva.

    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.