ho dei problemi a copiare con "copy" (script php) tra cartelle i file caricati sul sito dai diversi utenti! Credo dipenda dai permission di default dati ai file caricati ma non capisco come uscirne.
ho dei problemi a copiare con "copy" (script php) tra cartelle i file caricati sul sito dai diversi utenti! Credo dipenda dai permission di default dati ai file caricati ma non capisco come uscirne.
se non posti un po' di codice con eventuali errori è difficile capire.
Prova a controllare il proprietario delle directory con un client ftp e vedi se è lo stesso con cui gira il web server (lo puoi vedere controllando i file creati dalla tua applicazione).
ciao
1) carico i file sul sito con FLASH che punta al seguente file PHP
<?php
if ($_FILES['Filedata']['name']) {
$uploadDir = "../images/";
$uploadFile = $uploadDir .$_SERVER["REMOTE_ADDR"].".jpg";
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
chmod($uploadFile, 0777);
}
?>
prende il file lo rinomina e lo mette nella cartella "images".
I problemi nascono quando cerco di spostare il file in una seconda cartella col seguente pezzo di codice:
$ID=$_POST["IDf"];
if(! is_dir("../immagini/".$_POST["IDf"]))
{
mkdir("../immagini/".$_POST["IDf"],"0755");
}
$NomeFinaleFoto = time().$_SERVER["REMOTE_ADDR"].".jpg";
chmod("../images/".$_SERVER["REMOTE_ADDR"].".jpg","0755");
copy("../images/".$_SERVER["REMOTE_ADDR"].".jpg","../immagini/".$_POST["IDf"]."/".$NomeFinaleFoto)
la nuova cartella viene creata il file non viene spostato!
Su Localhost funziona tutto, quindi ritengo sia una questione di permission e privilegi ma di più non saprei!!
Da totale profano credo che tutto dipenda dalle attribuzioni di default alle cartelle ed ai file,
cose come "owner", "others" "group" !!!!![]()
se crei tu la cartella tramite php e questa viene creata problemi di permessi non dovrebbero essercene.
Sinceramente non ho analizzato bene come componi il percorso, ma io ricercherei il problema li.
Passando da flash è un po' più difficile fare debug perchè non vedi a video gli errori lanciati dal php, ma se provi a scrivere in un file il percorso puoi provare a vedere cosa cerchi di fare.
Ti consiglio dopo la procedura di creazione della directory di inserire solo per debug queste linee di codice:
Dovresti trovare dopo l'upload nella stessa directory del file php che esegue l'upload un file di log, con dentro il comando copy che esegui.codice:$filelog = './upload.log'; $h = fopen($filelog, 'a'); fwrite($h, 'copy("../images/"'.$_SERVER["REMOTE_ADDR"].'".jpg","../immagini/"'.$_POST["IDf"].'"/"'.$NomeFinaleFoto.')'); fclose($h);
Prova a vedere se nella sintassi c'è qualche errore.
Inoltre potresti provare anche a forzare il log degli errori php su un file di cui conosci il percorso.
All'inizio del tuo file php prova a mettere anche :
e prova dopo l'upload a vedere il contenuto di questo file.codice:ini_set('error_log', 'percorso/php.log');
Tutte queste operazioni sono solo per il debug, poi toglile dal tuo file.
Ciao
problema risolto!! Grazie ai tuoi illuminanti consigli!!!![]()