Buongiorno,
ho un form che mi carica alcuni dati su di un DB e anche mi fa upload nella cartella public del mio hosting (avendo hosting windows su aruba è l'unica cartella dove posso fare questa operazione).
Conoscendo bene i rischi di tenere dati nella cartella public ho creato un php che tramite la funzione ftp_put mi sposta i file dalla public alla cartella di destinazione sempre dello stesso spazio.
ecco il codice della pagina ftp_function.php :
Codice PHP:
<?php
$ftp_server = "xxxxxxxx";$ftp_user_name = "xxxxxxxx";$ftp_user_pass = "xxxxxxxx";
function moveFileViaFTP($source_file, $destination_file, $ftp_server, $ftp_user_name, $ftp_user_pass) { $conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if ((!$conn_id) || (!$login_result)) { echo "La connessione FTP è fallita!"; echo "Tentativo di connessione a $ftp_server per l'utente $ftp_user_name"; return false; }
$upload = ftp_pasv($conn_id, true); // Imposta la modalità passiva
if (!$upload) { echo "Errore nell'impostazione della modalità passiva FTP."; exit;}
if ((!$conn_id) || (!$login_result)) { echo "La connessione FTP è fallita!"; echo "Tentativo di connessione a $ftp_server per l'utente $ftp_user_name"; exit;} else { echo "Connessione FTP stabilita con successo!";}
echo "Source file: " . $source_file . "<br>";echo "Destination file: " . $destination_file . "<br>";
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
if (!$upload) { $error = error_get_last(); echo "Errore nello spostamento del file via FTP: " . $error['message']; exit;}
ftp_quit($conn_id);
return $upload;}
mentre per gestire le foto
Codice PHP:
if ($_FILES["foto1"]["name"] != "") { if (isImageFile($_FILES["foto1"])) { $foto1 = $targetDir . $_FILES["foto1"]["name"]; if (!move_uploaded_file($_FILES["foto1"]["tmp_name"], $foto1)) { echo "Errore nel caricamento della foto 1."; exit; } else { $destination_file = "/fotomaglie/" . $anno . "_" . $anno_successivo . "/" . $_FILES["foto1"]["name"]; $source_file = $foto1; if (!moveFileViaFTP($source_file, $destination_file, $ftp_server, $ftp_user_name, $ftp_user_pass)) { echo "Errore nello spostamento della foto 1 via FTP."; exit; } } } else { echo "Errore: il file 1 non è un'immagine."; exit; }}
ecco l'errore che ricevo:
Connessione FTP stabilita con successo!Source file: public/fotomaglie/2022_2023/20230511_081305.jpg
Destination file: /fotomaglie/2022_2023/20230511_081305.jpg
Warning: ftp_put(): End in D:\inetpub\webs\la-maglia-rosanerocom\ftp_function.php on line 35
Errore nello spostamento del file via FTP: ftp_put(): End
Credo che il problema dei permessi delle cartelle DIVERSE DA PUBLIC, con FTP, spostando il file che è già dentro il server.. non ci sia
Mi aiutate?? Grazie