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