ciao a tutti!
Ho un problemone su l'upload di file su un servizio ticket!
Allora partiamo col dire che ho creato la cartella root "allegati" dandogli tutti i permessi (0777)
ora che succede? accade che quando vado ad allegare un file al ticketche sto creando, mi viene creata all'interno della cartella root una nuova cartella chiamata "codice_$id" in modo che utilizzerò quel percorso per tutti i successivi allegati riguardanti quel determinato ticket.
quindi all'interno di essa mi troverò diversi file che allego di volta in volta.
Il problema sta nel creare questa directory!! infatti nonostante imosto i permessi a 0777 non mi vengono confermati tutti e il successivo passo del codice cioè il move_uploaded_file non viene eseguito ritornando un warning che dice:
Codice PHP:
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 601 is not allowed to access /"percorse del server..."/htdocs/ticket/allegati/codice_3 owned by uid 48 in /"percorse del server..."/htdocs/ticket/functions.inc.php on line 157
ora posto il codice e indico la riga 157
Codice PHP:
///////////////////////////////////////////////////////
// Funzione che aggiunge un allegato al database
///////////////////////////////////////////////////////
function add_allegato_ticket($wfile,$path_allegato,$utente)
{
//seleziono tutto dalla tabella deiticket
$query = mysql_query("SELECT * FROM $GLOBALS[mysql_prefix]ticket where owner='$utente' order by id desc");
//prendo l'id dell'ultimo ticket inserito
//$id_ticket=mysql_insert_id();
$row = mysql_fetch_array($query);
$id_ticket= $row[id];
//echo "$id_ticket";
$query1 = mysql_query("SELECT * FROM $GLOBALS[mysql_prefix]ticket WHERE id='$id_ticket'") or do_error('add_allegato($query1)::mysql_query()', 'mysql query failed', mysql_error());
$record=mysql_fetch_array($query1);
$id=$record['0']; //campo id nella tabella ticket
$guest=$record['8']; //campo id_utente nella tabella ticket
$query2 = mysql_query("SELECT * FROM $GLOBALS[mysql_prefix]user WHERE id='$guest'");
$record1=mysql_fetch_array($query2);
$guest2=$record1['3']; //campo nome guest (corrispondente all' id_utente della tabella ticket) nella tabella user
//echo $guest2;
//utilizzo questa funzione per ricavarmi l'estensione del file
$c_array = explode("/",$path_allegato);
// estraggo l'ultimo valore --> estensione del file
$path = array_pop($c_array);
//creo una cartella nominata con il nome "codice.id del ticket"!!!!
mkdir ("allegati/codice_".$id_ticket, 0777);
//memorizzo il percorso (cartella con il nome "codice.id ticket" e in esso "guest_id_ticket.estensione --> .$guest2.$id."."
$filename="allegati/codice_$id_ticket/".$path;
$query4 = "INSERT INTO $GLOBALS[mysql_prefix]allegati values ('','$filename','$id','0')";
$result = mysql_query($query4) or do_error("add_allegato($filename,$id,$tipo)", 'mysql query failed', mysql_error());
$query5 = "UPDATE $GLOBALS[mysql_prefix]ticket SET allegato='1' WHERE id='$id'";
$result = mysql_query($query5) or do_error('edit.php::update_ticket', 'mysql_query() failed', mysql_error);
move_uploaded_file($wfile,$filename); // <--- riga 157
}
Come si risolve il dunque?
è un problema di permessi credi, in quanto dal pannello ftp vedo che i permessi della cartella codice_$id che ho creato sono diversi da quelli della root.
come posso risolvere?
P.S. è fondamentale impostarli a 777 in quanto successivamente questi file possono essere modificati, cancellati o sovrascritti!quindi devo poter accedere ad essi senza restrizioni