Visualizzazione risultati 1 fino 12 di 12

Discussione: include invisibile

  1. #1
    Guest

    Predefinito

    Ho creato uno script php che crea un file php il cui codice comprende un "include" di un file php di configurazione contenente variabili e funzioni.
    Il file viene creato correttamente ed il suo contenuto è perfetto, ma se cerco di visualizzarlo l'"include" che è al suo interno è come se non ci fosse (e mi restituisce un errore perchè non trova la funzione che è definita nel file incluso appunto).
    Se apro il file nel pannello di controllo di altervista, NON MODIFICO NULLA, e lo risalvo, lo script funziona perfettamente.
    Inoltre in locale sul mio PC tutto funziona...
    qualcuno sa spiegarmi cosa accade?

    Allego il codice che uso per creare il file :
    [code:1:db3c8b2295]
    function crea_file_test($db_host, $db_user, $db_pw, $db_name, $nomeFile) {

    $testo="<? include 'config.inc.php'; print \"<a href='install.php?flag=2'>gestisci</a> <a href='install.php'>home</a><br>\"; sondaggio($db_host, $db_user, $db_pw, $db_name, $nomeFile); ?>";

    // Crea il file se non esiste
    $nomeFile=$nomeFile.".php";
    if (!file_exists($nomeFile)) {



    // Apre il file in modalità "write", in caso lo crea
    if (!$handle = fopen($nomeFile, 'w')) {
    echo "Non si riesce ad aprire od a creare il file ($nomeFile)";
    exit;
    }

    // Scrive $testo nel file aperto
    if (!fwrite($handle, $testo)) {
    echo "Non si riesce a scrivere nel file ($nomeFile)";
    exit;
    }

    // scrittura avvenuta
    fclose($handle);
    return $nomeFile;




    }


    }[/code:1:db3c8b2295]

    il contenuto del file dopo essere stato creato è appunto:
    [code:1:db3c8b2295]
    <?
    include 'config.inc.php';
    print "<a href='install.php?flag=2'>gestisci</a> <a href='install.php'>home</a><br>";
    sondaggio(localhost, xxx, yyy, zzz, blabla);
    ?>

    [/code:1:db3c8b2295]

    la funzione sondaggio() si trova dentro il file incluso "config.inc.php".

    PLEASE HELP ME

  2. #2
    Ospite Guest

    Predefinito

    prova a modificare $testo nella funzione così:
    [code:1:1fa322f77a]
    $testo='<? include 'config.inc.php'; print "<a href=\"install.php?flag=2\">gestisci& lt;/a> <a href=\"install.php\">home</a><br>"; sondaggio($db_host, $db_user, $db_pw, $db_name, $nomeFile); ?>';
    [/code:1:1fa322f77a]

  3. #3
    Guest

    Predefinito

    :?
    ma così c'è un'evidente errore di parsing....
    ed infatti da errore anche in locale...
    vorrei sottolineare che il mio script in locale funziona perfettamente... :x

  4. #4
    Guest

    Predefinito

    [code:1:9d4024c3b0]
    <?
    include 'config.inc.php';
    print \"<a href='install.php?flag=2'>gestisci</a> <a href='install.php'>home</a><br>\";
    sondaggio($db_host, $db_user, $db_pw, $db_name, $nomeFile);
    ?>
    [/code:1:9d4024c3b0]

    come vedi nel file finale appaiono i \" invece dei "
    se usi il print (o echo) con ' non hai bisogno di \ prima di "

    cmq l'include mi sembra che usi le parentesi.....

    include("file");

    sicuramente mi sbaglierò ma potrebbe essere... non ho nemmeno molto tempo pre un occhiata in profondità, scusa...

  5. #5
    Guest

    Predefinito

    scusate, ho sbagliato a scrivere io, il file finale ,che è corretto a tutti gli effetti ma che pare non vedere l'include, è il seguente:
    [code:1:df3722c648]
    <?
    include 'config.inc.php';
    print "<a href='install.php?flag=2'>gestisci</a> <a href='install.php'>home</a><br>";
    sondaggio(localhost, xxx, yyy, zzz, blabla);
    ?>

    [/code:1:df3722c648]
    la forma include (" "); è equivalente alla include ' ' ; e cmq le ho provate entrambe,
    vorrei ricordarvi che se apro e senza apportare modifiche salvo (all'interno del pannello di controllo altervista) tutto funziona...
    grazie a tutti coloro che stanno rispondendo....

  6. #6
    Guest

    Predefinito

    ok, allora....

    [code:1:00fa8e69cd]
    <?
    $nomeFile = "prova";
    #function crea_file_test($db_host, $db_user, $db_pw, $db_name, $nomeFile){
    $testo = '
    <?
    include("config.inc.php");
    echo \'<a href="install.php?flag=2">gestisci&lt ;/a> : <a href="install.php">home</a><br>\';
    sondaggio($db_host, $db_user, $db_pw, $db_name, $nomeFile);
    ?>
    ';
    $nomeFile = $nomeFile.".php";
    if (!file_exists($nomeFile)){
    #Apre il file in modalità "write", in caso lo crea
    $handle = @fopen($nomeFile, 'w') or die("Impossibile aprire $nomeFile");
    @fwrite($handle, $testo) or die("impossibile scrivere su $nomeFile");
    fclose($handle);
    return $nomeFile;
    }
    #}
    ?>
    [/code:1:00fa8e69cd]

    ho modificato un po di cose (e ho commentato la funzione per pigrizia di passarli i valori 8)) cmq testato in locale e in altervista e funziona

    provalo tu ora....

    se lo vuoi rimettere come prima scrivi: (anche se non credo che ti serva saperlo)

    [code:1:00fa8e69cd]
    <?
    function crea_file_test($db_host, $db_user, $db_pw, $db_name, $nomeFile){
    $testo = '
    <?
    include("config.inc.php");
    echo \'<a href="install.php?flag=2">gestisci&lt ;/a> : <a href="install.php">home</a><br>\';
    sondaggio($db_host, $db_user, $db_pw, $db_name, $nomeFile);
    ?>
    ';
    $nomeFile = $nomeFile.".php";
    if (!file_exists($nomeFile)){
    #Apre il file in modalità "write", in caso lo crea
    $handle = @fopen($nomeFile, 'w') or die("Impossibile aprire $nomeFile");
    @fwrite($handle, $testo) or die("impossibile scrivere su $nomeFile");
    fclose($handle);
    return $nomeFile;
    }
    }
    ?>
    [/code:1:00fa8e69cd]

  7. #7
    Guest

    Predefinito

    grazie per i consigli ma nel tuo modo a me non funziona, facendo altre prove però penso di aver capito cosa accade,
    vorrei focalizzare sul fatto che il file creato dal mio script ha un codice perfetto e cioè:
    [code:1:81bf4a2e64]
    <?
    include ("config.inc.php");
    sondaggio(localhost, user, pw, db, blabla);
    ?>
    [/code:1:81bf4a2e64]

    il problema non è quindi nello script che crea questo file ma piuttosto nel perchè dopo creato se si prova a visualizzarlo restituisce "call undefined function" (come se l'include non ci fosse) e se invece lo si edita senza apportare modifiche e lo si risalva il file funziona e vede l'include (e quindi la funzione).
    Mi sono accorto che nell RISALVARE il file per farlo funzionare CAMBIANO GLI ATTRIBUTI e l'OWNER del file, in pratica i permessi passano da -rw-r--r-- (file che non funziona)
    a
    -rw-rw-r-- (file perfettamente funzionante)

    e l'OWNER passa da
    48
    a
    50095

    ho provato a fre il cambio dell'owner e degli attributi con CHMOD() e CHOWN() ma nonvanno a buon fine :x

    penso quindi che questo sia il nocciolo della questione,
    a questo punto , alla luce delle nuove scoperte attendo fiducioso ancora il vostro gradito supporto

    :D

  8. #8
    Guest

    Predefinito

    La prima cosa che mi è venuta in mente quando hai detto che "se crei il filecon php non funge ma se lo salvi da pannello funziona" è che devi impostare il Content-type del file creato a "text/php", o megllio deve avere come header "Content-Type: text/php".

    Ma non ho mai provato a generare un php e ad impostare un header al file (sicuramente ci sarà il modo, vedi..).. non so se è questo.. ma da come si comporta l'anomalia ho forti sospetti che sia l'header.

  9. #9
    Guest

    Predefinito

    non so se quello che intendi è ciò che ho fatto ma non pare funzionare, con questa riga aggiunta al file che viene creato

    header ('Content-type: text/php');

    il browser cerca di far "scaricare" o aprire con l'applicazione appropriata il file php generato...

    ne sparo un'altra che mi è venuta in mente, non è che il problema è il "safe mode"? perchè dato che lo script funziona in locale sto sospettando che sia qualche parametro di configurazione del modulo php o del server web...
    :?

  10. #10
    Guest

    Predefinito

    hai provato a specificare nell'include il percorso completo del file config.inc.php?

  11. #11
    Guest

    Predefinito

    ho provato ma non funziona ugualmente...
    ci terrei a risottolineare il fatto che se cambio gli attributi di lettura scrittura del file questo funziona (in partica salvandolo dal pannello di controllo senza modificarlo i privilegi di lettura scrittura cambiano e si impostano come quelli di tutti gli altri file...che funzionano).
    Il nocciolo della questione dovrebbe essere intorno a questo fatto....

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da nemesisforum
    non so se quello che intendi è ciò che ho fatto ma non pare funzionare, con questa riga aggiunta al file che viene creato

    header ('Content-type: text/php');
    Mmmh non esattamente, ovvero, ovviamente intendevo il settaggio dell'header..
    ma attenzione che facendo in quel modo:
    header ('Content-type: text/php');

    imposti l'Header dell'output dello script php in esecuzione.. non l'header del file php "esterno" che hai generato, capisci la differenza?
    cioè se io invoco uno script php che direttamente mi deve restituire un output Javascript faccio così:

    <script language="Javascript" src="http://..../mio_script_js.php"></script>

    in questo script php nel codice apparirà appunto:

    header ('Content-type: text/javascript');

    in questo caso tutto funziona perché è lo stesso script ad "autodichiarare" il proprio content come text/javascript..
    ma se ho capito bene tu generi un file esterno php e dovresti scoprire (non ho mai provato) come impostarne l'header, penso sia possibile.

    Sono anche quasi sicuro che dipenda proprio dall'header non impostato la tua "sventura".

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •