Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754

    Path a una directory fratello

    Supponendo che ho due file .php organizzati così


    codice:
    .....
      |
      |
      |-dir_1
      |     |
      |     |-file_A.php
      |
      |
      |-dir_2
            |
            |-file_B.php
    Non riesco a includere il file A in B con costrutti tipo

    require_once '..\\dir_1\\file_A.php'
    require_once '../dir_1/file_A.php'
    require_once '/../dir_1/file_A.php'
    ...

    Vi evito il resto...ho provato tutte le combo di punti e slash (+singoli e doppi apici!!!) senza risultati tranne l'ovvio
    ...failed to open stream: No such file or directory in...

    Attualmente stavo facendo prove in locale (WinXP, Apache 1.3.31, PHP 4.x)...

    Qualche suggerimento?

  2. #2
    suggerimento 1:
    require_once '../dir_1/file_A.php'
    dovrebbe essere giusta...

    suggerimento 2:
    se fileB è a sua volta incluso.. l'inclusione parte da dove viene incluso file B



  3. #3
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Ho capito...anche se la soluzione non mi piace!

    Visto che come si capisce ho poca esperienza con il PHP ritenevo gli 'include' simili a quelli del C/C++ !

    Invece gli include si riferiscono, correggetemi se sbaglio!, alla pagina che inizia la cascata di inclusione.

    Mi spiego:

    codice:
    .....
      |
      |
      |-dir_1
      |     |
      |     |-file_A.php
      |
      |
      |-dir_2
      |     |
      |     |-file_B.php
      |
      |-pagina.php
    Se parto da pagina.php e mi serve file_B e a file_B serve file_A dovrò scrivere

    (in pagina.php)
    include "dir_1/file_A.php"
    include "dir_2/file_B.php"

    Come dicevo questa soluzione non mi piace perchè pagina.php potrebbe trovarsi in un punto diverso e ricordarsi tutte le inclusioni è antipatico.
    Al tempo stesso specificare il percorso assoluto è anche peggio !!!
    Altre soluzioni ce ne sono ?

  4. #4
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    [supersaibal]Originariamente inviato da }gu|do[z]{®©
    suggerimento 1:
    require_once '../dir_1/file_A.php'
    dovrebbe essere giusta...

    suggerimento 2:
    se fileB è a sua volta incluso.. l'inclusione parte da dove viene incluso file B


    [/supersaibal]
    Scusa non avevo letto la tua risposta!

    Sì il problema era proprio il suggerimento#2 !

    Senza ripetere la risposta che mi sono dato da solo effettivamente è un problema nel caso si vogliano modularizzare le 'librerie'...o forse non ho capito lo spirito del PHP?

  5. #5
    io generalmente faccio così:

    in gogni directory metto un file chiamato ad esempio "path.inc" che contiene ad esempio

    <?php
    $include_path = "../include";
    ?>

    poi nei miei file php faccio:

    require 'path.inc';
    require $include_path.'file_da_includere.php';


    in questo modo ho un solo file per ogni directory che contiene l'informazione sul path relativo per la directory include, dove concentro i files che non hanno vita autonoma ma sono semplicemente da includere... [chiaramente potresti avere + directory con file da includere.. e mettere farti + variabili nel file path.inc....]

    Anche se decido di spostare un file in un'altra directory sarà sempre in grado di ricostruire il path.. e se sposto un'intera directory mi basterà editare un unico file per aggiornare il path.

    E chiaramente non hai da preoccuparti neanche delle inclusioni a cascata perchè ogni file "includente" avrà un suo path "locale" che gli indica il eprcorso esatto

    spero sia quello che volevi sapere


  6. #6
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Grazie! Sì, era quello che mi serviva!

    E' un pò una sorta di 'hack' ma funziona !


  7. #7
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    'Uppo' il thread con questa cosa che ho 'scoperto' (forse ero l'unico a ignorarla... )

    $_SERVER["DOCUMENT_ROOT"]

    contiene il path completo della directory root (rimane sempre la stessa anche 'annidiando' la pagina in sotto-directory)

    La soluzione di }gu|do[z]{®© secondo me può essere preferibile in quanto non dipende dall'array $_SERVER[]
    che da quanto mi sembra di aver capito può mutare a seconda del server e quindi non avere settati determinati campi...

  8. #8
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    $_SERVER dipende ... dal server appunto
    ma alcune variabili si trovano sempre, tra cui $_SERVER['DOCUMENT_ROOT'] (a meno che non si utilizzi php da riga di comando)

    ad ogni modo per quanto riguarda le inclusioni controlla la voce include_path in php.ini, ed assicurati che sia presente la directory "." (ossia la directory corrente)
    dovresti avere una dicitura del genere:
    include_path = ".;c:\php\includes" <-- windows
    include_path = ".:/usr/local/lib/php" <-- linux/unix

    inoltre puoi considerare la possibilità di costruire il percorso assoluto di un file, ad esempio con dirname()
    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


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.