Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di marcoK
    Registrato dal
    Oct 2007
    Messaggi
    36

    Creazione cartella e upload file

    Ciao a tutti, è da diverse ore che sto impazzendo dietro ad un errore e spero che qualcuno abbia voglia di aiutarmi.

    Ho scritto un semplice codice che prima crea una cartella nuova sul server con nome postato da form e successivamente carica il file selezionato nella cartella appena creata... tuttavia non avviene l'upload dopo la creazione corretta della cartella... e non capisco il perchè... HELP PLEASE... grazie in anticipo...

    <?
    $dir = $_REQUEST['dir'];

    //creo la cartella nuova con il nome voluto
    mkdir('../../fotogallery/'.$dir, 0777, TRUE);

    //percorso della cartella dove mettere i file caricati
    $uploaddir = '../../fotogallery/'.$dir.'/';

    //Recupero il percorso temporaneo del file
    $userfile_tmp = $_FILES['userfile']['tmp_name'];

    //recupero il nome originale del file caricato
    $userfile_name = $_FILES['userfile']['name'];

    print "<pre>";
    //copio il file dalla locazione temporanea alla mia cartella upload
    if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name))
    {
    //Se l'operazione è andata a buon fine...
    print "File inviato con successo. Ecco alcune informazioni:\n";
    print_r($_FILES);
    }
    else
    {
    //Se l'operazione è fallta...
    print "Upload NON valido! Alcune informazioni:\n";
    print_r($_FILES);
    }
    print "</pre>";
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    conviene cominciare a scrivere codice "moderno" (nemmeno contemporaneo, perché è un po' che sono state introdotte ste cose)

    il tag di apertura non è <? ma <?php

    Conviene usare i giusti array (non $_REQUEST, ma $_GET e/o $_POST)

    Poi devi assicurarti anche che il form abbia il corretto enctype per trasmetter dati (enctype="multipart/form-data"

    Poi venendo al tuo problema nello specifico...ammesso e non concesso che il form fosse method=post e avesse l'enctype di cui sopra, cambia qualcosa se al posto del percorso relativo ci metti il percorso assoluto dalla root del server? Ossia qualcosa del genere:

    /www/suosito.com/htdocs/percorso/nomefile.ext
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di marcoK
    Registrato dal
    Oct 2007
    Messaggi
    36
    Originariamente inviato da Andrea1979
    conviene cominciare a scrivere codice "moderno" (nemmeno contemporaneo, perché è un po' che sono state introdotte ste cose)

    il tag di apertura non è <? ma <?php

    Conviene usare i giusti array (non $_REQUEST, ma $_GET e/o $_POST)

    Poi devi assicurarti anche che il form abbia il corretto enctype per trasmetter dati (enctype="multipart/form-data"

    Poi venendo al tuo problema nello specifico...ammesso e non concesso che il form fosse method=post e avesse l'enctype di cui sopra, cambia qualcosa se al posto del percorso relativo ci metti il percorso assoluto dalla root del server? Ossia qualcosa del genere:

    /www/suosito.com/htdocs/percorso/nomefile.ext
    ok, grazie per il consiglio di "aggiornarmi"... in effetti hai pienamente ragione...
    venendo al problema:
    il form è corretto, i dati passano corretti ed ho tentato di cambiare il percorso della root modificando il codice come segue:

    <?php
    $dir = $_POST['dir'];
    //creo la cartella nuova con il nome voluto
    mkdir('../../fotogallery/'.$dir, 0777, TRUE);

    //percorso della cartella dove mettere i file caricati
    $uploaddir = '/workdisk/home/web/www.caiorbassano.it/htdocs/pagine/alpinismo/fotogallery/'.$dir.'/';

    ...
    ?>

    però purtroppo continua a non funzionare. Credo che l'errore sia dovuto nell'assegnazione della cartella con la variabile all'interno dell'indirizzo, ovvero il finale /'.$dir.'/' .
    Questo lo dico perchè provando a rimuoverlo mi carica il file correttamente nella cartella fotogallery.

    Grazie ancora per l'aiuto.
    marco

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    aggiungi un po' di echo (per stampare il valore delle variabili, così vedi effettivamente con che bestie stai combattendo). In fase di sviluppo è "obbligatorio" avere anche l'error_reporting su E_ALL:

    in cima alla tua pagina, come prima istruzione metti
    Codice PHP:
    <?php
      error_reporting
    (E_ALL);
    ?>
    in questo modo ti verranno stampati a video warning ed errori che attualmente potrebbero essere mascherati da qualche impostazione nel php.ini
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di marcoK
    Registrato dal
    Oct 2007
    Messaggi
    36
    ok, fatto...
    viene fuori questo:


    Warning: move_uploaded_file() [function.move-uploaded-file]: SAFE MODE Restriction in effect. The script whose uid is 1136 is not allowed to access /workdisk/home/web/www.caiorbassano.it/htdocs/pagine/settori/alpinismo/fotogallery/cartellanuova owned by uid 1000 in /workdisk/home/web/www.caiorbassano.it/htdocs/pagine/settori/alpinismo/reserved/gallery/upload.php on line 20

    Upload NON valido! Alcune informazioni:
    Array
    (
    [userfile] => Array
    (
    [name] => montagna.jpg
    [type] => image/pjpeg
    [tmp_name] => /tmp/phpHrNXvG
    [error] => 0
    [size] => 1153
    )

    )

    questo nonostante abbia dato con mkdir autorizzazione alla lettura e scrittura??
    credo sia un discorso di SAFE MODE attivato sul server... come posso fare?
    Grazie ancora...

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    PEr curiosità: controlla che effettivamente la cartella sia creata con chmod 777 (lo puoi fare comodamente via client ftp). Se non fosse questo il caso, prova a dare 777 via ftp e a togliere la parte di creazione della cartella di destinazione (commenta mkdir...) e prova di nuovo.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it L'avatar di marcoK
    Registrato dal
    Oct 2007
    Messaggi
    36
    Effettivamente al controllo ho trovato che la nuova cartella ha diritti di 755... ed inoltre via ftp non mi permette di modificare i diritti dandomi come errore il "550: Operation not permitted".

    A questo punto l'unica cosa che mi è permessa fare, sempre tramite ftp, è:
    1- l'eliminazione della stessa e ricreazione cartella con il medesimo nome,
    2- l'assegnazione dei diritti in l/s (questa volta azione permessa)
    3- la possibilità di fare upload correttamente tramite lo script escludendo però mkdir.

    ?? che roba ??
    Ciao e grazie
    marco

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    4) Contatta il servizio hosting e chiedi se ci sono restrizioni particolari.

    Ad ogni modo, mi sono trovato anch'io in una simile situazione: mkdir funzionante ma diritti non assegnati (su coppermine). Senza scomodare il servizio hosting ho risolto con comandi ftp via php:

    codice:
    //added by Andrea
    if (isset($_GET['startdir'])) {
    	$chmod = chmod("/public_html/coppermine/albums/".$_GET['startdir']."/", 0777);
    	if (!$chmod) {
    	  //CHMOD via FTP
    	  $ftp_server = "tuosito.com";
    	  $ftp_user_name = "username";
    	  $ftp_user_pass = "password";
    	  $conn_id = ftp_connect($ftp_server);
    	  $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    	  
    	  // check connection
    	  if ((!$conn_id) || (!$login_result)) {
    	    echo "FTP connection has failed!";
    		echo "Attempted to connect to $ftp_server for user $ftp_user_name";
            exit;
    	  } 
    	  else {
    		$chmod_file = "/public_html/coppermine/albums/".$_GET['startdir']."/";
    		$ftp_chmod = ftp_chmod($conn_id, 0777, $chmod_file);
    		if (!$ftp_chmod) {
    		  $last_way = ftp_site($conn_id, sprintf('CHMOD %o %s', 0777, $chmod_file));
    		}
    	    // close the connection
    	    ftp_close($conn_id);
    	  }
       }    
    }
    //
    Adattalo alle tue necessità (correggi path e user/pwd per l'ftp)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it L'avatar di marcoK
    Registrato dal
    Oct 2007
    Messaggi
    36
    ho eseguito un phpinfo ed ho verificato l'attivazione del parametro safe mode che a quanto pare sembra essere il nocciolo della questione poichè inibisce radicalmente molte operazioni con comandi sulle cartelle e file...

    oggi proverò lo script che mi hai gentilmente passato e ti farò sapere... grazie mille per l'aiuto fin qui datomi...
    Marco

  10. #10
    Utente di HTML.it L'avatar di marcoK
    Registrato dal
    Oct 2007
    Messaggi
    36
    ok, ho provato ma purtroppo l'errore rimane identico...

    sono disarmato! :-)
    se hai altre idee te ne sarò grato, altrimenti grazie mille lo stesso per il cortese interesse al mio caso...
    Marco

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.