Buongiorno a tutti.
Il mio problema è semplice: qualcuno mi spiega la sintassi dell'argomento della funzione file()? Più precisamente: come si scrive il percorso?
In dettaglio: necessito di leggere l'array che esce fuori da un file di testo, chiamiamolo testo.txt, a mo' di database mediante la funzione file().
Finché lo script è nella stessa directory di testo.txt, con $array=file("testo.txt") tutto funziona.
Finché lo script è a monte di testo.txt, con $array=file("sottocartella/testo.txt") tutto funziona.
Non ne vengo fuori se lo script è a valle del file da leggere...
Ho una struttura del tipo cartella/sottocartella, dove testo.txt è su cartella, script.php è ancora su cartella (e da lì nessun problema di lettura), e appena voglio far leggere testo.txt da sottolettura.php, situato in sottocartella, che incorpora script.php tramite include(), non riesco a vedere l'array.
Ho provato con file("../testo.txt"), con file("/blabla/cartella/testo.txt"), con file("http://www.miosito.altervista.org/blabla/cartella/testo.txt") ...niente da fare!
Ora come ora ho creato una variabile di sessione... per carità funziona e serve allo scopo, ma sono abituato a risolverli i problemi, non aggirarli...
Grazie in anticipo se qualcuno mi darà delucidazioni in merito.
Capito. O meglio, la differenza tra percorso assoluto e quello che chiamo io percorso assoluto (cioè http://www.sito.etc.etc.) non mi è mai stata molto chiara, ma vabbè.
Più che altro: è formalmente errata la sintassi con i due punti per "arretrare" di una cartella? O sbaglio io qualcosa?
Devi distinguere tra percorsi assoluti sul filesystem locale e URL.
I primi si riferiscono ai file presenti su una macchina e se cominciano per / si intende a partire dalla radice. In questo modo il file viene richiesto direttamente al sistema operativo.
Gli URL cominciano con il protocollo (http:) e poi il percorso assoluto della risorsa. In questo caso invece la richiesta passa da un server web.
Nel tuo caso è più corretto ed efficiente richiedere i file dal filesystem.
I due punti servono a risalire di un livello nell'albero delle cartelle, rispetto alla posizione dello script che lo richiede. Quando la situazione è un po' complessa, con script PHP che ne includono altri, è più pratico affidarsi ai percorsi assoluti per non stare lì ad impazzire.
«È una mia peculiarità distorcere la verità e inventarne di nuove.»
«I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»
"per non stare lì ad impazzire" è decisamente corretto. L'include mi mandava lo script a risalire di DUE cartelle, e non di una soltanto. Ora la sintassi coi due punti ../../testo.txt funziona. Per cui concludo che era corretta e io scemo.
Grazie in ogni caso per le spiegazioni sui percorsi.