Newsgroup: it.comp.www.php
Titolo: [neofita] 3 directory root e 3 comportamenti diversi. Chi me li spiega?

Ciao a tutti,
ogni tanto lurko per prendere qualche informazione per il sito che sto
costruendo. Mi trovo davanti a questa situazione, che in qualche modo
riesco anche a risolvere, ma per evitare di andare a tentativi le prossime
volte che mi capita mi piacerebbe capire il perche` di questo comportamento.
Questo e` un pezzo della pagina:
<html>
<head>
...
    <LINK REL=StyleSheet HREF="/stili/style.css" TYPE="text/css">
...
</head>
<?php
   print("<body background='".$_DOCUMENT_ROOT."/stili/sfondoiha.png'>");
      require $_SERVER['DOCUMENT_ROOT']."/phplib/sql_lib.php";
...
Il path assoluto e` /web/htdocs/www.*****.org/home.
Nella dir principale c'e` una sottodirectory stili che contiene gli stili,
e una phplib che contiene alcuni file php per la connessione e utility varie.
Scritta cosi` funziona, cioe` mi prende gli stili dalla dir giusta, l'immagine
di sfondo e mi include la libreria.
Io pero` mi aspettavo di usare un "indirizzamento" omogeneo e cioe` usare
dappertutto "/" come dir principale oppure di usare la variabile
"_DOCUMENT_ROOT" oppure di fare la richiesta nell'array "_SERVER".
Qualcuno mi spiega perche` devo usare una sintassi diversa per ogniuno dei
tre casi?
Ringrazio in anticpio chiunque mi risponda.
Ciao
s
-- 
Stephen McPuppa
--------------------------------------------------------
Attenzione: anti-spam attivato, per scrivermi in privato
sostituisci sMcPuppa con s della puppa senza spazi.
--------------------------------------------------------

 tre casi?
Non te lo vorrei dire troppo bruscamente, ma hai le idee un po' 
confuse... i riferimenti che stai mettendo dentro la pagina vengono 
valutati in situazioni radicalmente diverse. Quando sei nel blocco php, 
le istruzioni di include e similari vengono eseguite sul server PRIMA di 
far uscire l'html verso il client; in questo ambiente hai accesso a 
tutto il filesystem del server, e puoi puntare dove vuoi in maniera 
relativa alla directory in cui stai eseguendo lo script, o in maniera 
assoluta facendo riferimento alla root dir "vera" del filesystem.
Invece i riferimenti che metti dentro i tag HTML vengono interpretati 
dal browser di chi sta scaricando la pagina DOPO che questa ha lasciato 
il tuo server. A questo punto ogni riferimento sarà necessariamente 
relativo al mapping della URI della pagina che stai vedendo, o assoluto 
se riferito alla rootdir del sito.
HTH, bye!
-- 
Fabrizio "Hermooz" Ermini

 assoluta facendo riferimento alla root dir "vera" del filesystem.
Azzz.... che idiota non ci avevo pensato....
Quindi vediamo se ho capito giusto: all'interno di un blocco php se io
punto a "/" intendo "/" del filesistem perche` questo blocco viene
interpretato prima dal preprocessore, all'esterno di un blocco di script
invece "/" e` la root della directory utente (che dal punto di vista del
fs sarebbe /web/htdocs/www.*****.org/home/ ).
E visto che il mio hosting e` su linux mi sento idiota doppiamente, visto
che l'immagine di sfondo che andavo a caricare in realta` e`
sfondoIHA.png e che linux e` case sensitive. :-)))
Tra l'altro ho verificato che non posso scrivere in /web/htdocs/www.*****.org/
invece che /web/....org/home perche` era un buon posto per mettere i file
di configurazione del db senza che siano raggiungibili dall'esterno (se non
erro anche questo e` un tuo suggerimento di qualche giorno fa).
C'e` qualche altro sistema per proteggere i file? Magari giocando sui diritti
di accesso al file?
Ciao
s
-- 
Stephen McPuppa
La pagina del NG: 
http://utenti.tripod.it/ithobbyacquari
