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

    Trovare differenza path tra file inclusivo e incluso.

    Ho un file main.php che ne include altri, via path relativi, tutti dentro sottocartelle rispetto a main.

    Ora, se includo main.php in index.php nella root o in altra cartella, evidentemente gli include dentro main.php puntano a posizioni relative rispetto ad index, non più a main.

    Come risolvere il problema?

    ciao,
    jack.

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Vuoi dire che hai degli include(); con percorso scritto manualmente? include(path/file.php); e una volta spostao il file main hai problemi?

  3. #3
    Non ho problemi strani,anzi.

    //miadir/subdir/inc.php
    ----------
    <?php
    echo "hello!";
    ?>
    ----------


    //miadir/main.php
    ----------
    <?php
    include "subdir/inc.php";
    ?>
    ----------

    Ora, se chiamo main.php funziona. Ma ovviamente se faccio così, non funziona più l'include relativo:

    //index.php
    ----------
    <?php
    include "miadir/main.php";
    ?>
    ----------

    Il problema è che in Main ho molti include già relativi e l'unica soluzione che ho in mente è trasformarli in assoluti usando __FILE__.

    Non esiste un altro modo più semplice?

  4. #4
    Ah, forse ho trovato, ma forse dà altri problemi...
    Usando:

    set_include_path(dirname(__FILE__));

    posso anche usare gli include relativi e li punta automaticamente alla dir giusta.

    Mi chiedo se c'è una controindicazione: tutti gli include che sono in Index, dopo Main, rimarranno vincolati, quindi dovrei richiamare la funzione set_include_path settando la root del server, in fondo a Main.php.

    Ma set_include_path è sempre accessibile?


  5. #5
    In pratica mi serve una funzione che faccia un confronto tra 2 path assoluti e ne restituisca uno relativo:

    codice:
    $main = 'c:/documents and settings/amministratore/documenti/webserver/miadir/'; //main.php
    $inc = 'c:/documents and settings/amministratore/documenti/webserver/altradir/'); //index.php
    
    // Così che:
    
    $result = '../miadir/' // Path relativo da index a main.
    Come farla?

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Non so se è quello che ti serve, ma prova così:
    Codice PHP:
    $main 'c:/documents and settings/amministratore/documenti/webserver/miadir/'//main.php

    $inc 'c:/documents and settings/amministratore/documenti/webserver/altradir/'//index.php

    $exp1 explode("/",$main);
    $exp2 explode("/",$inc);

    $result array_diff_assoc($exp1$exp2);

    print_r($result); 
    ciao

  7. #7
    credo ti convenga inclduere il file con il path assoluto,
    e di ricavartelo da realpath:
    il codice:
    codice:
    include_once (realpath(dirname(__FILE__))."/sottocartella/file_da_includere.php");
    dovrebbe funzionare sempre...

    PS in realtà
    dirname(__FILE__)
    realpath(dirname(__FILE__))
    mi danno lo stesso risultato

  8. #8
    Codice PHP:
    $main 'c:/documents and settings/amministratore/documenti/webserver/MIAdir/SUBdir/'//main.php

    $inc 'c:/documents and settings/amministratore/documenti/webserver/altradir/'//index.php

    $exp1 explode("/",$main);
    $exp2 explode("/",$inc);

    $result array_diff_assoc($exp1$exp2);

    print_r($result); 
    mmm.. l'idea è quella, ma il codice non funziona. Ho modificato le var (vedi sopra) vorrei che mi desse:

    $result = '../MIAdir/SUBdir/';

    Si capisce?

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.