Visualizzazione risultati 1 fino 5 di 5

Discussione: sottocartelle e Include()

  1. #1
    Guest

    Question sottocartelle e Include()

    Ciao a tutti, vi spiego il mio mega problema!!!
    Ho un albero di questo tipo

    /a/index.php
    /a/b/inc.php
    /a/b/librerie/lib.php
    /a/b/librerie/lib2.php



    inc.php è un programma che vive di vita propria e che ha degli include nella sua cartella "librerie"

    Esempio di inc.php
    Codice PHP:
    <?php
    ...
    include(
    "librerie/lib.php");
    include(
    "librerie/lib2.php");
    ...
    ?>
    lanciando inc.php il tutto funziona e le librerie vengono incluse, il problema ce l'ho quando vado a includere inc.php dentro index.php.
    A quel punto lanciando index.php non vengono più incluse le librerie di inc.php e quindi lib.php e lib2.php non vengono caricate...

    Come risolvo?
    Help Please
    Ultima modifica di siticms : 11-10-2006 alle ore 22.01.31

  2. #2
    Guest

    Predefinito

    pare strano..... posti il codice dell'index.php?
    hai fatto include "b/inc.php"; ? dovrebbe funzionare...

  3. #3
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Potresti mettere un percorso assoluto (/membri/siticms/... oppure /membri2/siticms/...).
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  4. #4
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    A me pare normale che non funzioni quando inc.php viene incluso a sua volta.
    Finché viene chiamato inc.php direttamente come script è ovvio che rintracciando i due file sotto librerie con percorso RELATIVO tutto funziona, perché quello è un percorso relativo rispetto a dove sta inc.php (sotto /a/b/)
    ma se lo script principale è /a/index.php tutti i percorsi -anche dei suoi file inclusi- sono relativi alla cartella /a/
    Quindi, come quando per includere relativamente in /a/index.php il file /a/b/inc.php scrivi:
    include("b/inc.php");
    (giusto?)
    anche dentro inc.php gli ulteriori "sotto-include" dovrebbero essere:
    include("b/librerie/lib.php");
    include("b/librerie/lib2.php");

    OK?

    Tu mi dirai: "eh ma io ho due casi diversi" (quando richiamo direttamente inc.php e quando quest'ultimo viene incluso da altro script)
    Ed ecco un tipico caso in cui è IMPOSSIBILE far uso di percorsi relativi negli include, e quindi è necessario raggiungerli con percorsi assoluti, per es. in inc.php:
    Codice PHP:
    <?php
    ...
    include(
    "/membri/siticms/a/b/librerie/lib.php");
    include(
    "/membri/siticms/a/b/librerie/lib2.php");
    ...
    ?>
    Nota bene che, come dice funcool, su altervista è possibile che la prima cartella utente sia o /membri/ oppure /membri2/
    Puoi saperlo o consultando una TUA pagina .php con dentro scritta la riga:
    phpinfo();

    Oppure basta che scrivi una qualsiasi minkiata in uno script per farti uscire fuori un messaggio d'errore: nel messaggio ti indica il percorso ASSOLUTO del tuo script e lì vedi se è membri o membri2.

    Se cerchi nel forum per "include" associato all'utente Heracleum noterai che nel 90% dei casi in cui si tratta di percorsi relativi io li sconsiglio sempre fortemente -se non si fosse ancora capito - consigliando invece gli assoluti.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  5. #5
    Guest

    Predefinito

    intanto vi ringrazio delle vostre risposte...
    cmq il problema dei path relativi lo avevo immaginato anche io così e sinceramente anche le soluzioni, ma quello che cercavo di fare era di includere il tutto senza andare a modificare i file inc.php e lib.php

    In pratica io vorrei INCLUDERE nel mio sito il famoso phpbb senza doverlo lanciare con suo indirizzo /forum/bla bla bla e non vorrei neanche usare redirect!
    Volevo semplicemente fare un www.miosito.it/index.php?azione=forum

    Controllo azione e faccio l'inlcude che mi serve
    OK?



    stavo pensando... posso modificare durante l'esecuzione la funzione include()?
    Ultima modifica di siticms : 12-10-2006 alle ore 13.55.12

Regole di scrittura

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