Visualizzazione risultati 1 fino 10 di 10

Discussione: Problema con mkdir (livello di directory???)

  1. #1
    Guest

    Angry Problema con mkdir (livello di directory???)

    Salve a tutti,


    secondo quello che ho potuto verificare pare ci sia un pesante problema col mkdir :


    allora il codice è :


    Codice PHP:
    function check_directory ($directory, $verifica, $livello)
    {
    $pre="..";

    echo
    "<br/>L : " . $livello . " - ";
    echo
    "E : " . $verifica . "<br/>";

    if (
    $verifica==0)
    {
    if (!
    is_dir($directory))
    {
    echo
    " -1- ";
    if (!
    is_dir($pre . $directory))
    {
    echo
    " -2- ";
    if (
    mkdir($directory, 0777))
    {
    echo
    " -3- ";
    echo
    "Directory $directory creata<br/>";
    } else {
    echo
    " -4- ";
    echo
    "Errore creazione directory $directory <br/>";
    return
    $livello;
    };
    } else {
    echo
    " -5- ";
    if (!
    chmod($pre . $directory, 0777))
    {
    echo
    "err chmod???";
    }
    }
    } else {
    echo
    " -6- ";
    chmod($directory, 0777);
    }
    } else {
    echo
    " -7- ";
    return
    $verifica;
    }
    return
    0;
    }

    $U=substr("0000000000".$idUtente, -10);

    $intDir1 = '/Files';
    $intDir2 = '/Files/' . $U ;
    $intDir3 = '/Files/' . $U . '/' . $idA ;
    $intDir4 = '/Files/' . $U . '/' . $idA . '/' . $idB;


    $ErrorDir=0;
    $ErrorDir=check_directory($intDir1, $ErrorDir, 1);
    $ErrorDir=check_directory($intDir2, $ErrorDir, 2);
    $ErrorDir=check_directory($intDir3, $ErrorDir, 3);
    $ErrorDir=check_directory($intDir4, $ErrorDir, 4);


    if (
    $ErrorDir==0) {
    $_SESSION['img_path']=$intDir4;
    } else {
    echo
    "errore $ErrorDir errore nell'accesso alle directory, prego contattare l'amministratore";
    }

    lo stato iniziale è:
    /Files/ : esistente, permessi 775
    /Files/0000000007/ : esistente, permessi 775
    /Files/0000000007/101 : non esistente
    /Files/0000000007/101/10 : non esistente

    mi da errore dandomi come risultato le seguenti scritte di debug:


    L : 1 - E : 0
    -1- -5-
    L : 2 - E : 0
    -1- -5-
    L : 3 - E : 0
    -1- -2- -4- Errore creazione directory /Files/0000000007/101

    L : 4 - E : 3
    -7- errore 3 errore nell'accesso alle directory, prego contattare l'amministratore

    lo stato finale è :


    /Files/ : esistente, permessi 777
    /Files/0000000007/ : esistente, permessi 775
    /Files/0000000007/101 : non esistente
    /Files/0000000007/101/10 : non esistente

    Qualcuno mi può aiutare??? non riesco a capire perchè non mi crea le directory
    Ultima modifica di disprova : 01-07-2013 alle ore 21.51.12

  2. #2
    Guest

    Predefinito

    Nessuno sa come mai chmod funziona slo al primo livello di directory???

  3. #3
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Non so cosa tu stia cercando di fare, ma direi che sbagli. A partire dal chiamare una funzione "check_" e poi fargli creare directory e cambiare permessi.

    Cambiare permessi in 777 è inoltre inutile: il default 755 è sufficiente per qualsiasi cosa tu voglia fare.

    In ogni caso, tutto quel codice potrebbe essere sostituito da una sola chiamata ad mkdir()
    Codice PHP:
    $result = mkdir('directory/che/ti/serve/esista/', 755, true);
    Ultima modifica di dreadnaut : 02-07-2013 alle ore 20.03.14

  4. #4
    Guest

    Predefinito

    In cosa sbaglio???
    il cambio di permessi mi serve per poter utilizzare l'upload (JustBoil) di tinymce, altrimenti non funziona.

    755 non mi basta,mi serve per forza 777, provato anche 775 ma niente, pare che solo 777 gli possa andar bene.... se hai una qualche soluzione da proporre per tinymce sono tuttorecchi.

    Tieni presente che mi serve che l'utente possa fare l'upload su una sua cartella /Files/<idutente>/<idA>/<idB> se non esiste il sistema la deve creare e impostare....


    Grazie
    Ultima modifica di disprova : 03-07-2013 alle ore 22.22.46

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Citazione Originalmente inviato da disprova Visualizza messaggio
    In cosa sbaglio???
    il cambio di permessi mi serve per poter utilizzare l'upload (JustBoil) di tinymce, altrimenti non funziona.
    E' un problema di JustBoil quindi, perché 755 vuol dire che i tuoi script possono fare tutte le operazioni possibili. Mettere 777 vuol dire dare permessi ad altri utenti, che non possono (fortunatamente) comunque accedere ai tuoi file, e quindi non serve a nulla.

    Citazione Originalmente inviato da disprova Visualizza messaggio
    Tieni presente che mi serve che l'utente possa fare l'upload su una sua cartella /Files/<idutente>/<idA>/<idB> se non esiste il sistema la deve creare e impostare...
    Come ho scritto sopra, una chiamata a mkdir con l'intero path è sufficiente —hai letto la documentazione a proposito del parametro recursive?

  6. #6
    Guest

    Predefinito

    grazie comunque
    anche il tuo codice non va, result è sempre false e non crea la directory nemmeno con 755
    Ultima modifica di disprova : 04-07-2013 alle ore 18.45.23

  7. #7
    Guest

    Predefinito

    ho provato anche con un ftp_mkdir come indicato in http://it2.php.net/mkdir nota 3 ma non è installato l'ftp in php, mkdir mi fa sempre comunque cilecca e non capisco perchè......

    che ci sia un problema di SAFE MODE???

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Nel mio codice mancava uno zero davanti al numero dei permessi, per il resto ho ricontrollato ora e non ci sono problemi.

    Codice PHP:
    $result = mkdir('directory/con/sotto/dir', 0755, true);
    Se ottieni $false dovresti andarti a controllari i messaggi di errore, per visualizzarli nella pagina ti basta chiamare
    Codice PHP:
    error_reporting(E_ALL);

  9. #9
    Guest

    Predefinito

    provato, mi dice :
    Warning: mkdir() [function.mkdir]: SAFE MODE Restriction in effect. The script whose uid is 1852959 is not allowed to access / owned by uid 0 in /membri/disprova/DiSirArt/EditorScrittura.php on line 159
    riga 159 è
    $result = mkdir($intDir4, 0755, true);
    $intDir4 inoltre è settata correttamente : "/Files/0000000007/101/124"

    ma come??

    se il mkdir avviene da script che ha user 1852959?????
    non capisco....
    Ultima modifica di disprova : 05-07-2013 alle ore 10.50.34

  10. #10
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Su altervista la root directory è /membri/nickname/.
    Pertanto se la directory Files si trova nella root, allora il percorso esatto sarebbe: /membri/disprova/Files/...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •