Newsgroup: it.comp.www.php
Titolo: Problema stupido con include

Salve,
devo includere un file html presente nella document root.
uso questa riga:
<?
...
include ('/barra.html');
...
?>
Ma fallisce.......dove è l'errore??? HELP ME!!
Grazie
Nicola 


include ('../barra.html');
-- 
Lello Vitello
cantautore alla bona
www.lellovitello.it

 Ma fallisce.......dove h l'errore??? HELP ME!!
Il manuale, questo sconosciuto ...
http://www.php.net/include
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.

 ha scritto nel messaggio 
news:YSQYe.7396$kA.3...@news3.tin.it...
: Salve,

:
: 

 messo include ('/barra.html')
Lo hai letto il manuale, c'e' scritto esattamente dove stai sbagliando.


: Lo hai letto il manuale, c'e' scritto esattamente dove stai sbagliando.
L'avevo già letto prima di scrivere, ma non sono riuscito a capire il mio 
errore. Se tu fossi così gentile da darmi una mano..penso bastino poche 
parole per aiutarmi.
Nicola 

 mio errore.
I path NON devono essere relativi al document root, ma al file system.
Se includi /file.htm stai includendo il file nella root del file
system, non nella document root.



devi provare con ./../../ (ogni ../ indica dir superiore)
oppure ./
a seconda delle differenza di path


 oppure ./ a seconda delle differenza di path
Per favore, posta in risposta al messaggio giusto.


 system, non nella document root.
Pero' a questo punto andrebbe pure consigliato di utilizzare la variabile
del server 
$rootpath=$_SERVER['DOCUMENT_ROOT'];
$abspath=$rootpath.$fintoabsolutepath;
e' ASSURDO scrivere del codice che dipende dalla collocazione del medesimo
nella macchina.
Ed e' assurdo consigliare solo laconicamente leggiti il manuale, senno'
non si cresce mai.
-- 
http://www.awikia.org
 : @ WIKI @rchitecture
http://www.awikia.org/php
 : noterelle bilingui anglo-valdostane su php e
dintorni.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 : include ('/barra.html');
include($_SERVER['DOCUMENT_ROOT']."/barra.html");
Questa funziona in ogni livello (directory) del tuo sito.
-- 
Ciao,
	Fabrizio
===  
http://www.negusweb.it
  ===


visto che te non rispondi alle domande e fai il sapientone
non me ne frega un cazzo della tua IMHO
chiaro ! gira al largo
usando il virtual path e non il path assoluto permette di spostare il web
dove cazzo ti pare
ad esempio in 
http://server.it/web/index.php
http://server.it/web/web2/index.php
senza doversi riscrivere gli include (e va anche con windows/linux)
(permette di avere piu siti sullo stesso server in modo indipendente)



sul manuala tra l'altro certe cose sono indicate appena (dice solo che
esistono)
e gli esempi a volte sono scarni
leggiti il manuale e' un modo per togliersi il sasso dalla scarpa e "aver
dato risposta"
si capisce meglio da un esempio che da "leggiti il nanuale" (come manuale ci
si riferisce al .chm esteso)
e non a quello "neutro" 
http://www.php.net/download-docs.php
 extended chm
(solo in inglese)
e se non si capisce si scarica anche quello italiano
spesso c'e' gente che chiede come si fa una cosa, solo perche non sa che
esiste una funzione
o un costrutto in quel caso leggiti il manuale e' tutto (anche se per capire
certe cose c'e da diventare deficenti
ad esempio
$pizza = 0; e' un numero ed e' ache empty o false (il che a volte crea
"casini")
e sul manuale e' un po ambiguo
$pizza = "0"; e' stringa pero si puo sommare ad un altra stringa $pizza2 =
"5";


 web dove cazzo ti pare
COnvinto tu, tranne se fai include di include dove con i riferimenti
relativi non funzionano e che sotto IIS $_SERVER['DOCUMENT_ROOT'] non
esite etc. etc.


 senno' non si cresce mai.
Non cresce nemmeno se gli fornisci la pappa pronta, specialmente se
lacunosa.
$_SERVER['DOCUMENT_ROOT'] sotto IIS non esiste.
Se vuoi un soluzione che vada sotto tutti i sistemi operativi ed i
server devi usare i path assoluti:
include(dirname(__FILE__) . '/../barra.html');
e simili.
Puoi trovare questa soluzione in piu' di 30 post fatti su questo ng, ma
ovviamente devi volerla trovare.


 e se non si capisce si scarica anche quello italiano
Si, certo, se escludiamo che ho indicato la pagina esatta dove trovare
la soluzione al suo problema ...



tutti gli os PHP e' un "eseguibile" cercano le dipendenze nella dir corrente
e poi nella system
che in php esiste una dir dove mettere gli script "di sistema"
FUNZIONA ?
allora ok
non funziona ? ci si sbatte
non si capisce si chiede
e si spera che qualcuno faccia "pappa cotta"
con un minimo di spiegazione in modo da non rompere piu sullo stesso
argomento


 la soluzione al suo problema ...
hai provato il codice che hai scritto o lo hai solo scritto li
dicendo non funziona perche e' scritto sul manuale


 esite etc. etc.
Questo e' un dato interessante da tenere presente.
Gia', le variabili di server sono una faccenda relativa all'ambiente
sottostante.
Si, il mio libro lo mette un caveat grosso come una casa (e' la prima
frase del primo paragrafo della sezione relativa) su questo pericolo.
Bene.
Credo che quando escono queste cose la bonta' di un libro la si possa
giudicare.
Il mio e' PHP e MySQL, guida completa di APOGEO autori Simon Stobart, Mike
Vassileiou.
Quindi andrebbe anche anche ben documentato l'uso di variabili di server
come caveat.
Grazie ad entrambi per il vostro battibecco da cui escono sempre
informazioni,  per me che sono un pivello, interessanti.


 ovviamente devi volerla trovare.
Grazie, anche se dubito che una certa sensibilita' come quella di pensare
alla portabilita' del codice la trovi cercando, neppure sai che...
Probabilmente rileggendo tante discussioni indietro nel passato si', ma da
intendere come esplorazione per imparare tanto, ma nella fretta di trovare
un argomento specifico non credo sia valido il metodo che suggerisci e
comunque non credo sia totalmente alternativo alla discussione.
Certo, per chi come te frequenta regolarmente il newsgroup capisco che
cadano le braccia a sentirsi sempre fare le stesse domande, ma cambiano
gli interlocutori e le domande quindi non sono mai sempre esattamente le
stesse perche' la loro preparazione puo' essere diversa tra uno e l'altro,
quindi le risposte opportune da dare possono dover essere diverse tra loro.
E questo lo capisci dialogando.
Ma e' verissimo che molti neppur si sbattono a fare da se' e prendono
questo spazio come un'alternativa all'indice del manuale.


 directory of current script. 
current working directory= directory dove sta lo script php invocato che
ingloba tutto?
directory of current script= directory dove sta lo script dove e' questo
codice?
Io avevo capito valesse sempre e solo la prima invocazione.
Che siginifica che prima si vede un path relativo ad un posto e poi anche
il path relativo ad un'altra? Cioe' se non c'e' un file nel primo posto ma
c'e' nel secondo vine incluso questo secondo file?


 
http://127.0.0.1/papere/in_papere.php
Sfotti o prendi per il culo?
Dalla tua macchina nella tua macchina con un indirizzo di localhost il
link funziona ;-))


 dicendo non funziona perche e' scritto sul manuale
E tu il tuo lo hai provato? Certo che no, perche' se fosse cosi'
sapresti che NON FUNZIONA.
Sto ancora aspettando un codice che funzioni solo con i path relativi.


 FUNZIONA ?
No, sei stato cosi' cieco nel leggere il codice degli altri ed ottuso
sulle tue posizioni che non ti sei accorto che si parla di include di
include (a.php -> c.php -> b.php).


 dialogando.
Se gli utenti cercassero su google groups un minimo, non serve tanto,
le discussioni precedenti sarebbero di sicuro aiuto. Personalmente
trovo il 90% delle soluzioni ai miei problemi su GG, e ti assicuro, i
miei problemi sono molto piu' specifici di quelli che vengono
continuamente postati qui.


 Sto ancora aspettando un codice che funzioni solo con i path relativi.
Ma con i path relativi a cosa?
Alla posizione dello script che contiene l'istruzione include o relativi
alla posizione del primo script invocato che poi include tutti gli altri?
Se e' la seconda che intendi esiste del codice che funziona con i path
relativi.
-- 


 continuamente postati qui.
Infatti mi sto chiedendo da un po' di tempo perche' TU frequenti questo ng.


 funziona con i path relativi.
In entrambi i casi non esiste un codice che funzioni sempre. E'
sufficiente dover includere il file da un punto diverso dell'albero
delle directory che i path relativi iniziano a puntare a direcotry e
file sbagliati.
L'unico modo per avere un codice che funzioni correttamente e'
l'utilizzo di path assoluti. L'utilizzo di dirname(__FILE__) e' l'unica
soluzione realmente portabile e funzionante.



scota mi sono installato apache ;-) php e mysql in locale
li metti sul tuo server e vedi che vanno


 soluzione realmente portabile e funzionante.
Non e' l'unico modo, io in awikia semplicemente appendo il path del file
che chiama a quello relativo alla posizione di tale file chiamato e le
cose funzionano.


 chiamato e le cose funzionano.
E come lo fai (il codice)?


 E come lo fai (il codice)?
Inizializzo in un primo include messo nella stessa cartella dello script
principale una variabile che mi indica la posizione del pacchetto rispetto
al sorgente che lancio.
Inoltre inizializzo delle variabili che mi indicano la posizione degli
script  da includere rispetto alla radice del pacchetto, e che in effetti
sono un modo per scegliere proprio che tipo di script fare eseguire.
Poi unisco i due percorsi per avere un percorso assoluto.
I sorgenti sono tutti qui, basta decomprimere il tar del lazio, viene
creata una cartella chiamata awikia che se espansa in uno spazio disco di
pagine php e' leggibile come documentazione, banalmente la copia della
stessa cartella del sito 
www.awikia.org
:
http://www.awikia.org/awikia/it.php?title=@download@


 pacchetto rispetto al sorgente che lancio.
Cosi' pero' DEVI sempre includere quel file in tutte le pagine. Le
varie pagine che lo includono devono avere dei path assoluti (che devi
in qualche modo generare). Non puoi piu' includere singolarmente le
pagine ma devi sempre reincludere sempre quel file. Se tenti di
includere un sinoglo file va tutto a quel paese esattamente come con i
path relativi etc.
Tutto questo non avviene se usi dirname(__FILE__) in tutte le
inclusioni perche' cosi' facendo i path sono sempre assluti e generati
dinamamicamente su ogni richiesta.


 path relativi etc.
No d'accordo, tecnicamente e' come tu dici, in questo caso pero' non e'
importante perche' il pacchetto e' pensato per essere fatto a directory
come singoli blocchi, piu' che a singoli file, ogni wiki e' una di questa
directory che tu copi e dove poi vai solo a modificare il file che devi
includere in maniera relativa.
Ossia nella directory di accesso al wiki tu avrai sempre certi file con
certi nomi che includono il file comune di configurazione ove e' contenuta
la posizione di questa directory rispetto al pacchetto o la posizione del
pacchetto rispetto alla root intesa come root web.
E tu in questa directory a dire il vero dovresti toccare solo il file di
configurazione incluso in tutti gli altri scipt che lo devono includere,
che lo includono e che va bene cosi' perche' tanto sono file che non
tocchi.
E lo includono in maniera relativa e non assoluta perche' devono includere
il file nella stessa cartella, perche' la logica e' a cartelle.
Poi il pacchetto invece e' organizzato con una sua struttura in cui il
dove indica anche il cosa, e quindi nel file di configurazione metterai
anche questi percorsi ma relativi rispetto al pacchetto.
Questo mi serve per poter copiare in altro posto una cartella e dover solo
aggiornare la posizione del pacchetto rispetto a lei e non anche la
posizione dei file relativi.
Ma e' pur vero che se in questo file di configurazione che va sempre
incluso in maniera relativa io inserissi la posizione del pacchetto in
maniera assoluta renderei ancora piu' autonoma la cosa, ma lo farei nella
singola installazione, e questo non li va..
Ed in certi casi e' quello che faccio, solo il primo include e' relativo
ma e' giusto che sia cosi', perche' ragiono con intere directory tutte
uguali che sono i punti di accesso ai wiki ed in cui varia solo il file
incluso che e' un file di configurazione di quel wiki, e non a file
singoli.


 wiki, e non a file singoli.
Vedi quanto poco sopra.


 in qualsiasi struttura di directory sotto qualsiasi sistema operativo.
No, perche' la tua e' un gran casino, aria fritta, ed a volte per avere
flessibilita' occorre darsi delle regole.
Tu ragioni ancora in termini di file, roba vecchia, io ragiono in termini
di moduli ossia di cartelle.
Certo, in ogni tipo di modulo che faccio capita io replico il codice, ma
quando aggiusto quel modulo tutti i wiki che prelevano quel codice sono a
posto.
Mi sono dato delle regole rigide, certo, servono per sviluppare il codice
entro quelle regole, ma anche obbligare tutti a viaggiare a destra e' meno
flessibile che il caos eppure tutti hanno deciso di adeguarsi.
In pratica il mio e' un approccio dall'alto al basso: stabilisco la
struttura di un punto di accesso e come esso deve trovare i suoi file.
Tutto qui.
Ma non e' un progetto di software, ma semplicemente il fissare delle
regole.
Certo che uno standard non e' flessibile, senno' che standard sarebbe.
E non vuole essere uno strumento per organizzare il codice come procedura
chiamata, ma il codice lato chiamante per i punti di accesso.


 Questa funziona in ogni livello (directory) del tuo sito.