Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    mkdir/move_uploaded_file errore owner

    Salve a tutti,
    Ho già cercato nel forum argomenti simili ma non sono ancora riuscito a risolvere il mio problema.

    Per farla breve:

    Ho un mio script che effettua un upload (in modo asincrono, richiamato da jquery) di determinati files con qualche controllo.

    Ha sempre funzionato, ma stavolta per cercare di fare le cose più ordinate ho voluto sistemarlo in modo che caricasse i files in una directory univoca (tipo "id_utente-nomecognome"), se non c'è già ovviamente la crea.

    Fin quì tutto ok, se la directory non esiste nel path la crea con permessi chmod 0777.

    Il problema è che quando faccio il move_uploaded_file() nella directory creata non copia il file!

    Ho fatto qualche prova e ho visto che creando manualmente la cartella da client FTP e dandogli i permessi a 0777 il move_uploaded_file funziona perfettamente.

    Con tutta probabilità è un problema di owner, perchè il codice php crea la cartella con owner "www-data" mentre il client FTP da owner "nomedominio.dominio".

    Ora, vorrei evitare accrocchi del tipo far creare la cartella da php tramite ftp_mkdir, altrimenti dovrei allineare ogni volta il codice con i dati FTP.


    Qualcuno sa darmi una dritta?

    Grazie.
    --- LoryStorm :: lorysite.eu & forumwap.net ---

  2. #2
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    prova a settare i diritti con 0777:

    mkdir("/path/to/my/dir", 0777);

    o meglio ancora anzi soprattutto:

    mkdir("/path/to/my/dir", 0777);
    chmod ("/somedir/somefile", 777);

    risp.
    move_uploaded_file($_FILES['Filedata']['tmp_name'], $file_src);
    chmod ("/somedir/somefile", 777);

    chmod messo dopo dovrebbe aiutare...

  3. #3
    Originariamente inviato da jeppox
    prova a settare i diritti con 0777:

    mkdir("/path/to/my/dir", 0777);

    o meglio ancora anzi soprattutto:

    mkdir("/path/to/my/dir", 0777);
    chmod ("/somedir/somefile", 777);

    risp.
    move_uploaded_file($_FILES['Filedata']['tmp_name'], $file_src);
    chmod ("/somedir/somefile", 777);

    chmod messo dopo dovrebbe aiutare...
    Grazie per la repentina risposta.

    Ho provato or ora ma niente.

    Il fatto è che io già do mkdir("/path/to/my/dir", 0777);
    ed effettivamente andando da client FTP nelle proprietà del path il chmod è a 777,
    è l'owner che secondo me da problemi.

    Per evitare altri problemi uso quesa sintassi (consigliata sulla documentazione del php):
    $oldumask = umask(0);
    mkdir($targetPath,0777,true);
    umask($oldumask);

    Ovviamente sia in questo modo che con la sintassi "classica" il problema è sempre quello.
    --- LoryStorm :: lorysite.eu & forumwap.net ---

  4. #4
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    allora prova a cambiare il proprietario con chown()

    Codice PHP:
    // Datei- und Benutzernamen setzen
    $file_name"foo.php";
    $path "/home/sites/php.net/public_html/sandbox" $file_name ;
    $user_name "root";

    // Benutzer setzen
    chown($path$user_name);

    // Ergebnis prüfen
    $stat stat($path);
    print_r(posix_getpwuid($stat['uid'])); 

  5. #5
    Originariamente inviato da jeppox
    allora prova a cambiare il proprietario con chown()

    Codice PHP:
    // Benutzer setzen
    chown($path$user_name); 
    Ancora niente, questa l'avevo già provata ma molto probabilmente per questioni di sicurezza l'host non mi permette di cambiare l'owner di una cartella.

    L'idea sarebbe di trovare un modo per far andare il trasferimento tra tmp e la cartella, quello che dovrebbe fare il move_uploaded_file...
    --- LoryStorm :: lorysite.eu & forumwap.net ---

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Se i permessi sono 777, non dovrebbe essere importante che l'owner sia diverso.
    Piuttosto, l'istruzione move_uploaded_file() non ti segnala errori?

  7. #7
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    Originariamente inviato da lorystorm90
    Il problema è che quando faccio il move_uploaded_file() nella directory creata non copia il file!
    domanda. sei sicuro che quando applichi la funzione move_uploaded_file() + chmod() utilizzi il path assoluto + nome del file quale target?

    bool move_uploaded_file ( string $filename , string $destination )

    in $destination devi concatenare al path assoluto anche il nome del file.

  8. #8
    Originariamente inviato da jeppox
    domanda. sei sicuro che quando applichi la funzione move_uploaded_file() + chmod() utilizzi il path assoluto + nome del file quale target?

    bool move_uploaded_file ( string $filename , string $destination )

    in $destination devi concatenare al path assoluto anche il nome del file.
    Sisi, concateno tutto il path assoluto.

    La cosa che non mi torna è che creando la STESSA cartella manualmente il move_uploaded_file funziona..!
    --- LoryStorm :: lorysite.eu & forumwap.net ---

  9. #9
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    se fai:

    Codice PHP:
    if(!move_uploaded_file(...)){
    echo 
    "error";
    } else {
    echo 
    "ok";

    ich che blocco entra?

    ed in generale che errore ti da esattamente?

  10. #10
    Originariamente inviato da jeppox
    se fai:

    Codice PHP:
    if(!move_uploaded_file(...)){
    echo 
    "error";
    } else {
    echo 
    "ok";

    ich che blocco entra?

    ed in generale che errore ti da esattamente?
    Va nell'error..

    Originariamente inviato da luca200
    Se i permessi sono 777, non dovrebbe essere importante che l'owner sia diverso.
    Piuttosto, l'istruzione move_uploaded_file() non ti segnala errori?
    Facendo un
    Codice PHP:
    echo print_r(move_uploaded_file($tempFile,$targetFile)); 
    Quando non va a buon fine (cartella creata dinamicamente) restituisce 1,
    quando fa a buon fine (cartella creata manualmente) restituisce 11
    --- LoryStorm :: lorysite.eu & forumwap.net ---

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.