Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    292

    upload server+invio mail error

    Buona sera a tutti,
    scrivo perchè ho un problema nell'eseguire queste due operazioni:

    tramite una form può essere caricato un file pdf, lo script richiamato all submit si occupa di:
    inviare il file per e-mail e successivamente salvare il file in un cartella del server.
    Qui arriva il problema, il file viene caricato su server mentre la sendmail() (phpmailer) riporta che non riesce ad accedere al file temporaneo.
    Se elimino il codice di caricamente su server move_uploaded_file(), invece il file viene inviato per e-mail senza problemi.
    Sembra come se move_uploaded_file() una volta salvato il file nella destinazioni blocchi il file temporaneo, o lo elimini.

    Avete suggerimenti?

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    inverti la sequenza delle operazioni:

    1 salvi il file nella cartella del server
    2 Invii l'email prendendo il file dalla cartella e non dai file temporanei


  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    292
    grazie per la risposta las, ci avevo pensato ma qui entra in gioco un secondo problema.
    Comunque è normale che dia quel problema che tu sappia?

    Il secondo problema è che penso di avere i permessi solo in scrittura per la cartella in cui salvo il file, quindi poi non potrei leggerlo per mandarlo via mail dopo averlo salvato (sempre se è possibile avere permessi solo in scrittura). Dico questo perchè una volta salfato il file (e tramite FTP lo vedo) se uso la funzione file_exists ($NomeDelFile) mi da false.

    Sono bloccato qui da stamattina per fare un semplice upload.

  4. #4
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Onestamente non credo che sia molto normale come funzionamento, non mi risulta che move_uploaded_file distrugga il file temporaneo.
    Per quanto riguarda i permessi se il server è linux in teoria è possibile avere solo il permesso di scrittura e non di lettura ..... ma in realtà è molto inusuale una situazione del genere, anche perchè non avrebbe molto senso

    prova ad usare la funzione copy anzichè move_uploaded_file

    Codice PHP:
    copy ($_FILES['file']['tmp_name'],"/tuo/percorso/nomefile.ext"); 
    se non funziona posta il codice.


  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    292
    grazie las, domattina proverò con la funzione copy come mi hai suggerito
    Il server purtroppo è windows, e la cartella in questione ha l'accesso diretto protetto da password, e per questo utilizzo if(file_exists($file)){get_file_contents($file)} per l'accesso ai files.
    la cartella temporanea se non ricordo male è C:\Windows\TEMP.
    trovo tutto un pò strano anche io, e infatti non so come risolvere

    Grazie davvero per l'aiuto

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    292
    Buon giorno, sembra che ho risolto il problema ma non capisco il perchè di questo comportamento quindi las posto il codice in cerca di chiarimenti

    Codice PHP:
    $mail->Send(); 
    $query "SELECT * FROM utenti WHERE email = '".mysql_real_escape_string(strip_tags(trim($_POST['mail'])))."'";
    $dati mysql_query($query,$db) or die("Query1 non valida: " mysql_error()); 
    $mail mysql_fetch_array($dati); 
    //se mail utente non presente in database 
    if($mail == false) {     
       
    $queryInsert "INSERT INTO utenti SET                     cognome = '".strip_tags(mysql_real_escape_string($_POST['cognome']))."',                     email = '".strip_tags(mysql_real_escape_string($_POST['mail']))."'";
       if(
    mysql_query($queryInsert,$db)!=false){  //*********         
          //recupera id utente per inserirlo nel nome del file         
          
    $queryId "SELECT id FROM utenti WHERE email = '".mysql_real_escape_string(strip_tags(trim($_POST['mail'])))."'";         
          
    $utenteId mysql_query($queryId,$db) or die("Query1 non valida: " mysql_error());
          if(
    $utenteId!=false){             
             
    $id mysql_fetch_array($utenteId);             
             
    //Salvataggio file             
               
    if(move_uploaded_file($_FILES['CV']['tmp_name'],,"path/".$id['id'].$typeFile)){                 
                  
    $query "UPDATE utenti    SET nome_file = 'path/".$id['id'].$typeFile."'   WHERE email = '".mysql_real_escape_string(strip_tags(trim($_POST['mail'])))."'";
                  
    $dati mysql_query($query,$db) or die("Query1 non valida: " mysql_error());             }         
                  }     
             }  
       }


    ***** inserendo l'IF in questa riga , o anche una sleep, il tutto funziona, come se fare quelle due query una dietro l'altra creasse problemi

    Il secondo problema invece permane, salvato il file su server, la funzione file_exists e di conseguenza print file_get_contents() falliscono, come se non avessi i diritti in lettura. La cartella in questione è protetta da accesso diretto con password ma non dovrebbe dare problemi ciò

    Grazie per un'eventuale risposta

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.