Newsgroup: it.comp.www.php
Titolo: readfile: failed to open stream, ma solo in certe cartelle...

Non riesco a capire perchè il seguente codice:
<?php
$PERCORSO="/percorso_completo/".$_GET["percorso"];
readfile($PERCORSO);
?>
funziona perfettamente in certe cartelle, anche esterne a /var/www/html,
e non in altre, dove ritorna "failed to open stream". I permessi sono
gli stessi, i proprietari pure, SeLinux è su permissive... l'unica
differenza è che dove non funziona è una FAT, o forse il percorso tipo
/home/utente/.cartella/files, che passa per una cartella nascosta... o
qualche impostazione di php.ini... mi viene in mente anche il fatto che
non funziona su una sottocartella della mia home, ma non so se è
importante. Qualcuno sa aiutarmi? Non ci capisco più niente!
Marco

 e non in altre
Da qualche prova che ho fatto, sembra che il problema sia proprio la 
home... riesco a leggere solo i files che non sono nella mia home.
Sembrerebbe un problema dovuto a SeLinux, se SeLinux non fosse su 
permissive.
Sistema operativo: Fedora 8, con tutti gli aggiornamenti effettuati.

 Sistema operativo: Fedora 8, con tutti gli aggiornamenti effettuati.
Con php, quindi apache, tranne configurazioni particolari non puoi 
accedere a /home (come del resto a /root) mentre puoi accedere a quasi 
tutte le altre cartelle...è un problema di permessi.
	Francesco

 tutte le altre cartelle...è un problema di permessi.
E se volessi, finchè testo i risultato in locale (ma tramte dyndns, 
quindi niente localhost), permettere questo accesso, sarebbe possibile? 
Meglio ancora se potessi permettere l'accesso solo ad una particolare 
cartella, che si trova all'interno di una partizione montata dentro 
/home/mioutente/nomemount.
Marco

 
Hai diverse possibilità: spostare i dati dalla home dell'utente in un 
folder leggibile sia dall'utente che da apache, provare con un hard 
link, aggiungere apache al gruppo dell'utente interessato (visto che 
utilizzi RH, quindi ogni utente ha anche il proprio gruppo), abilitare 
tutti (altamente sconsigliato) alla lettura di tale folder, fare una 
copia dei file interessati ogni tot tempo in altro folder, far girare 
httpd come altro utente etc..
Come vedi le soluzioni sono molteplici, io sposterei tali dati in una 
folder fuori dalla home, dando ad apache il solo accesso in lettura
	Francesco

 dando ad apache il solo accesso in lettura
I permessi sono per utente, gruppo, altri. Significa dare ad altri i 
permessi di sola lettura, giusto?

 permessi di sola lettura, giusto?
No, se crei un folder fuori dalla home dell'utente puoi mettere l'utente 
come owner (con permessi rwx) e apache come gruppo (con permessi rx), se 
lo dai ad altri tutti gli utenti possono leggere tale folder.
	Francesco

 lo dai ad altri tutti gli utenti possono leggere tale folder.
Sembra inutile, anche se assegno alla cartella il gruppo apache
(permessi 750), i files al suo interno vengono creati dall'applicazione
java che li genera con il mio gruppo, permessi 664.

 
Siamo largamente OT ma visto il basso traffico di questi giorni, 
proviamo ad andare avanti. Se l'applicazione non si preoccupa 
direttamente alla modifica dei permessi (p.e. samba provvede a creare i 
file rispettando una certa mask) prende le impostazioni del sistema.
Un file 664 è leggibile da tutti, valuta se questo è per te un problema. 
Puoi forzare anche l'umask oppure utilizzare il IV valore del chmod 
(p.e. 2750).
	Francesco