[php]Include

  • Creatore Discussione Creatore Discussione angel
  • Data di inizio Data di inizio

angel

Utente Attivo
2 Nov 2009
109
0
0
Ciao ragazzi!
Ho un problema con include, prima di tutto vi spiego la gerarchia nel mio sito.
PHP:
www
      config
               config.php
      funzioni
                funzione.php
                funzione2.php
                funzione3.php
      linguaggio
                linguaggio.php
index.php

1)Nel file "funzione2" viene incluso funzione3 e ho fatto cosi, include "funzione3.php"
2)Nel file "funzione2" viene incluso il file config perché deve interrogare il db e ho fatto cosi, include "../config/config.php"
3)Nel file "function2" viene incluso il file linguaggio perché dovrebbe contenere le variabili globali e ho fatto cosi, include "../linguaggio/linguaggio.php"
4)Nel file "index" viene incluso solo il file funzione e ho fatto cosi, include "funzione/funzione.php"

Nel file index.php mi stampa errori di questo tipo
PHP:
<br />
<b>Warning</b>:  include(../config/config.php): failed to open stream: No such file or directory in ....
<br />
<b>Warning</b>:  include(): Failed opening '../config/config.php' for inclusion (include_path='.;C:\php\pear') in....
<br />
<b>Warning</b>:  include(../linguaggio/linguaggio.php): failed to open stream: No such file or directory in...
<br />
<b>Warning</b>:  include(): Failed opening '../linguaggio/linguaggio.php' for inclusion (include_path='.;C:\php\pear') in...

P.s
Per richiamare all'interno di un funzione del file funzione2.php una variabile globale con global perché con funziona?

Ringrazio anticipatamente
 
ciao
devi considerare che includere (es.) il file due.php nel file uno.php è come se tu facessi un copy di quanto c'è nel file due.php e un paste nel file uno.php
quindi se fai nel file funzione2.php
PHP:
<?php
include "funzione3.php";
//ecc.. altro codice se c'è della funzione 3...
?>
poi nel file index.php
PHP:
<?php
include "funzioni/funzione2.php";
//ecc.. altro codice se c'è della funzione 2......
?>
è come se tu avessi scritto in index.php
PHP:
<?php
include "funzione3.php";
//ecc.. altro codice se c'è della funzione 3...
//ecc.. altro codice se c'è della funzione 2......
//ecc...
?>
quindi, nel tuo caso in index.php, hai errore perche non trova funzione3.php
quindi in funzione2.php devi scrivere
PHP:
<?php
include "funzioni/funzione3.php";
//ecc.. altro codice se c'è della funzione 3...
?>
dopo l'inclusione in index.php ti ritrovi l'equivalente a
PHP:
<?php
include "funzioni/funzione3.php";
//ecc.. altro codice se c'è della funzione 3...
//ecc.. altro codice se c'è della funzione 2......
//ecc...
?>
ed ecco che index.php trova funzioni3.php
è evidente che se chiamassi funzione2.php avresti errore funzione3.php non trovato
il percorso di file inclusi e a loro volto inclusi deve fare riferimento all'ultimo file che include
 
Il problema che nel file funzione2.php devo fare delle query e non posso mettere due volte il file di configurazione darebbe errore, no?
 
Tu dici cosi, esempio:

funzione2.php
PHP:
include 'funzione3.php';
include '../config/config.php';
include '../linguaggio/linguaggio.php';

index.php
PHP:
include_once "config/config.php";  
include "funzione/funzione2.php";

Se è cosi non funziona.
 
ciao
ricapitoliamo, tu dici
4)Nel file "index" viene incluso solo il file funzione e ho fatto cosi, include "funzione/funzione.php" (ps.funzioni/), ma cosa metti dentro
funzione.php?
i file che non trova da cosa li includi in index.php? gli errori sono dati, da quello che dici, quando chiami il file index quindi in qulche modo hai cercato di includere quei file.
fai uno schema di come includi (es.)
file index.php:
PHP:
<?php
include "funzioni/funzione.php";//e se ci sono altri include
?>
file funzione.php:
PHP:
<?php
include "??????";
?>
e cosi per ciascuno
 
Index.php
PHP:
<?php
include_once "config/config.php";  
include "funzioni/funzione.php";
?>

funzione.php
PHP:
<?php
include "funzione2.php";
?>
funzione2.php
PHP:
<?php
include "funzione3.php";
include "../config/config.php";  
include "../linguaggio/linguaggio.php";
?>
 
Il file config.php viene già incluso nell'index richiamando funzione.php, quindi il primo include dell'index non dovrebbe servire. O meglio se il file funzione2.php viene utilizzato solo all'interno dell'index togli l'include al file "../config/config.php" e usa quello che c'è nell'index.

Comunque sia sostituisci tutti gli include con include_once, dovresti risolvere.
 
Ultima modifica:
ciao
oltre al consiglio di marco_rx
fai in questo modo
index.php
PHP:
<?php
include_once "config/config.php";  //questa la metti qui e togli in funzione 2 o viceversa
include_once "funzioni/funzione.php";
?>
funzione.php
PHP:
<?php
include_once "funzioni/funzione2.php";
?>
funzione2.php
PHP:
<?php
include_once "funzioni/funzione3.php";
include_once "config/config.php";  //se tieni questa togli l'include nella index
include_once "linguaggio/linguaggio.php";
?>

vedrai che chiamando la index non dovresti avere più warning
 
Se faccio come dite voi, non posso fare più query sul file funzione2.php e i warning li ottengo sul file funzione.php e funzione2.php
 
ciao
ma il file funzione2 non viene incluso nell'index? quindi non è funzione2 che fa le query ma index.
lo script che hai in funzione2 viene incollato nella index
 

Discussioni simili