Visualizzazione risultati 1 fino 9 di 9

Discussione: specificare la root

  1. #1
    Guest

    Question specificare la root

    Ciao a tutti,
    come faccio in un percorso a specificare la root del mio sito?

    Da html funziona bene, ad es. <img src="/foto.jpg"> ....

    Ma da php non è la stessa cosa, se in una funzione metto "/filename" tenta di accedere alla root del server... andrebbe messo "/membri/nomeutente/filename".

    La domanda è: c'è un modo di ottenere quel "/membri/nomeutente/" dinamicamente in modo che non sia vincolato al sito?
    Grazie.

  2. #2
    L'avatar di foreach
    foreach non è connesso Altervistiano Junior
    Data registrazione
    11-06-2008
    Residenza
    3 metri sotto terra
    Messaggi
    501

    Predefinito

    Sì, usando la variabile $_SERVER['DOCUMENT_ROOT'] per vedere la root e $_SERVER['SCRIPT_FILENAME'] per vedere il percorso assoluto del file che stai visitando.









    foreach
    Codice PHP:
    foreach($vettore as $chiave => $valore) {
    echo 
    "Ciao";


  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da foreach Visualizza messaggio
    Sì, usando la variabile $_SERVER['DOCUMENT_ROOT'] per vedere la root e $_SERVER['SCRIPT_FILENAME'] per vedere il percorso assoluto del file che stai visitando.

    foreach
    La prima non l'ho capita, mi ritorna qualcosa tipo /var/html/www che francamente non so da dove salti fuori.

    La seconda ritorna il percorso attuale + nomefile. Però non mi aiuta più di tanto a determinare la root.
    Su Altervista so che i primi due percorsi compongono la root (/membri/nomeutente/path1/path2/...) per cui potrei analizzare la stringa e prelevare solo i primi 2.

    Tiuttavia mi piaceva fare qualcosa di più universale, indipendente dal server.

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Per trovare la root ( non sapendo la cartella/file in cui ti trovi ):
    Codice PHP:
    function root() {
    $dir = realpath('./');

    while(
    $d = @realpath($dir . '../')) {
    $dir = $d;
    }

    return
    $dir;
    }

    echo
    root();
    Ultima modifica di javascripter : 09-07-2010 alle ore 16.27.44

  5. #5
    Guest

    Thumbs up

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Per trovare la root ( non sapendo la cartella/file in cui ti trovi ):
    Codice PHP:
    function root() {
    $dir = realpath('./');

    while(
    $d = @realpath($dir . '../')) {
    $dir = $d;
    }

    return
    $dir;
    }

    echo
    root();
    Perfetto grazie mille!

    Edit:
    Anzi no... funziona ma ha lo stesso difetto della risposta precedente: non ritorna solo la root, ma la root/path1/path2/ ...
    Ultima modifica di robertobizzarri : 09-07-2010 alle ore 17.03.46 Motivo: funziona ma....

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Strano a me funziona. Se mi trovo in cartella1/cartella2/cartella3 restituisce /membri/nickname
    Ultima modifica di javascripter : 09-07-2010 alle ore 17.19.24

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Strano a me funziona. Se mi trovo in cartella1/cartella2/cartella3 restituisce /membri/nickname
    mmhh curioso, ho provato nuovamente e continua a darmi anche la root+directory

    ...versione di php? io uso la 5

  8. #8
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Scusa ma ho commesso un errore, eccoti la funzione corretta:
    Codice PHP:
    function root() {
    $dir = realpath('./');

    while(
    $d = @realpath($dir . '/../')) {
    $dir = $d;
    }

    return
    $dir . '/';
    }
    realpath restituisce il percorso senza lo slash finale. L'errore era:
    Codice PHP:
    while($d = @realpath($dir . '../')) {
    Corretto diventa:
    Codice PHP:
    while($d = @realpath($dir . '/../')) {

    In più ho aggiunto anche
    Codice PHP:
    return $dir . '/';
    in modo da ottenere la root con lo slash finale.

    Edit: credo di aver trovato un metodo "migliore", in modo da evitare di richiamare sempre la funzione realpath:
    Codice PHP:
    function root() {
    $dir = './';

    while(
    is_dir($dir . '../')) {
    $dir .= '../';
    }

    return
    realpath($dir) . '/';
    }
    Ultima modifica di javascripter : 09-07-2010 alle ore 17.22.17

  9. #9
    Guest

    Thumbs up funziona!

    Grazie javascripter!
    Funziona benissimo ora!!

Regole di scrittura

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