Newsgroup: it.comp.www.php
Titolo: [PHP + Linux] - problema con permessi e Owner

Il problema è questo:
quando carico i files di uno script via ftp, vengono assegnati al 
"proprietario" web17
(lo script in questione è un modulo sul genere "downloads" di un portale)
quando creo una categoria dall'amministrazione dello script, viene 
generata la corrispondente cartella sul server (chmoddata correttamente) 
che però appartiene a "apache"
di conseguenza quanco carico un file via form e poi vado a spostarlo 
nell'apposita cartella mediante move_uploaded_file l'operazione non va a 
buon fine e viene generato un errore.
Il server ha il safe_mode abilitato e gira su linux. L'errore credo sia 
dovuto al fatto che il php (per via del safe mode) controlla i 
proprietari delle cartelle, e trovandoli diversi si incacchia e non 
compie le operazioni necessarie.
Cosa strana...
se via ftp creo la cartella "uploads", via script riesco a creare le 
sottocartelle.
se invece cerco di creare anche la cartella uploads via script, la cosa 
non va a buon fine.
Qualche aiuto?
Ho spulciato il manuale ma a st'ora è dura venirne a capo.
Denghiu (anche links vanno bene)

 va a buon fine e viene generato un errore.
Quale errore? Posta il codice. 
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 
Il controllo incriminato è questo:
if(!@move_uploaded_file($archive, "".$uploads_path.$archname."")){	
	include ("header.php");
	echo "<div align=\"center\">3 "._ALERT_7.$archive_name._ALERT_8."<br 
/><br />\n
				<A HREF=\"javascript:history.go(-1)\">"._ALERT_2."</a></div>\n";
	PgFooter();
	unlink("".$subs_temp.$archname."");
return false;
} else {
	chmod($uploads_path.$archname, $fileperms);
}
invece di andare sull'else entra nell'if e mi stampa il messaggio.
Ho provato creando la sottocartella da ftp, e l'upload va a buon fine 
(purtroppo)
Dico purtroppo perch non posso farlo via ftp in quanto in fase di 
creazione della cartella vengono salvate delle info nel database.
Ciao

 creazione della cartella vengono salvate delle info nel database.
http://www.php.net/ftp


 move_uploaded_file ($archive, $uploads_path. $archname);
questo codice: print ("$archive<br>".$uploads_path.$archname."");
restituisce le seguenti due righe:
/var/www/html/web17/phptmp/phpWVMNfh
modules/Subtitles/uploads/Testz/matrix_ita.zip
a occhio mi paiono giuste.
Ciao

 a occhio mi paiono giuste.
move_uploaded_file oltre a restituire FALSE visualizza qualche warning?
Hai tolto l'operatore @?


 Hai tolto l'operatore @?
Mannaggia a me, era la chicciolal che non mi faceva vedere il warning 
che mi da ragione.
 > move_uploaded_file oltre a restituire FALSE visualizza qualche warning?
Eccolo qui
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The 
script whose uid is 671 is not allowed to access 
/var/www/html/web17/html/modules/Subtitles/uploads/Testz owned by uid 48 
in /var/www/html/web17/html/modules/Subtitles/upload.php on line 274
Quindi mi pare di capire che è come dico io, vero?
Ovviamente nemmeno l'istruzione copy funziona.
Tuttavia io credo ciò si possa risolvere modificando la configurazione 
del server.
Voglio dire, ad esempio su altervista, con tutto il safe_mode questo 
script funziona.
Mentre sul server su cui sto lavorando ora non va perchè le cartelle 
caricate via ftp appartengono all'utente web17, mentre quelle create via 
php appartengono ad apache.
Non credo che far coincidere i due proprietari sia un grosso pericolo 
per la sicurezza, o sbaglio?
Ciao

 configurazione del server.
Hai provato chmod 777?


 
da script o da ftp?
proverò tutti e due.
open_basedir è settato sulla root dello spazio
http://web17.nsi25.miniserver.de/phpinfo.php
sto impazzendo :(

 274
Prova cosi:
1. Via FTP cancella la directory
/var/www/html/web17/html/modules/Subtitles/uploads
2. Con uno script PHP crea la directory
/var/www/html/web17/html/modules/Subtitles/uploads
3. Riprova l'upload.


 3. Riprova l'upload.
fatto...
il risultato è che ora sotto la cartella uploads (che appartiene ad 
apache, quindi è stata creata correttamente, ed ha permessi 0777) non mi 
fa creare più le sottocartelle, sempre con laa stessa motivazione, uid 
diversi...
infatti la cartella uploads si trova sotto la cartela Subtitles, che 
appartiene a web17.
La cosa buffa è:
se creo la cartella uploads da ftp (owner => web17) e faccio chmod a 
0777, le sottocartelle di uploads riesco a crearle, e l'errore si 
verifica ovviamente quando vado a caricarci un file perchè anche qui 
uploads e sottocartella hanno uid differente.
Continuo a credere che si possa risolvere solo configuranto 
correttamente linux. :'(
Grazie pe gli input

 3. Riprova l'upload.
Sto risolvendo cambiabdo lo script in modo che crei le cartelle con 
istruzioni ftp e non con il classico mkdir.
Se posso approfittarne vorrei chiederti un consiglio:
sono in dubbio se sostituire tutte le istruzioni mkdir, 
move_uploaded_file ecc con le istruzioni per ftp, oppure fare in modo 
che le ftp vengano utilizzato solo nel caso di safe_mode on o meglio 
ancora di errori restituiti dalle altre, quindi come ultima risorsa.
Che ne dici?
Inoltre, per rendere la cosa il più compatibile possibile credo mi 
convenga attivare il pasv subito dopo il login nelle connessioni, vero?
Ultimissima: le max dimensioni di upload restano sempre limitate dal 
phpini vero?
Ciao e grazie come sempre.