Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [PHP] : Cartelle con permmessi 0777

    Salve a tutti,
    come da titolo ho bisogno che un mio script crei una cartella con questi permessi :

    codice:
       $d.='/directory/esempio/';
       if (! file_exists($d))
       { 
          mkdir($d,0777);
        }
    Ho provato anche con chmod($d,0777) ma nulla, non solo non mi setta i privilegi ma non mi da neanche false come risultato!!

    E' una questione di configurazione di server (quindi devo contattare il mio fornitore) oppure posso porre rimedio tramite un file .htaccess (che cmq già utilizzo per il modrewrite) ?

    Grazie.
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  2. #2
    nessuno sa come posso fare?
    il problema è che dentro a questa cartella ne devo creare altre e se non mi imposta i diritti a 0777 ma a 0755 non posso farlo!

    Grazie!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    quello che scrivi è errato, perchè file_exists è appunto per i FILES..
    prova così:
    Codice PHP:
    $path $_SERVER['DOCUMENT_ROOT'"cartella/"
    if (!
    is_dir($path)) {
        
    mkdir($path,0777);

    se non te la crea contatta il fornitore..

  4. #4
    Originariamente inviato da telegio
    quello che scrivi è errato, perchè file_exists è appunto per i FILES..
    prova così:
    Codice PHP:
    $path $_SERVER['DOCUMENT_ROOT'"cartella/"
    if (!
    is_dir($path)) {
        
    mkdir($path,0777);

    se non te la crea contatta il fornitore..

    Dal manuale del PHP

    codice:
    file_exists — Controlla se un file o directory esiste
    
    Descrizione
    bool file_exists ( string $filename )
    
    Restituisce TRUE se il file o la directory specificata da filename esiste; FALSE altrimenti.
    Infatti il comando funziona correttamente.. il problema sta nel fatto che mi crea la directory ( ho messo un echo per controllare se tenta il mkdir) con permessi 0755 e quindi se provo a creare una sottodirectory non me lo fa!
    Ora provo ad usare $_SERVER['DOCUMENT_ROOT']..
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  5. #5
    tanto per esser chiari questo è lo script:

    Codice PHP:
    if ($zip->open('../tmp/aggiorna.zip'))
    {
      for (
    $j=0$j<$zip->numFiles;$j++)
      {
        
    $f=$zip->statIndex($j);
        
    $p=pathinfo($f['name']);
        
    $dirst=explode('/',$p['dirname']);
        
    //$d='../';
        
    $d=$_SERVER['DOCUMENT_ROOT'].'/';
        for (
    $i=0;$i<count($dirst);$i++)
        {                    
          if (
    $dirst[$i]<>".")                    
          {
            
    $d.=$dirst[$i].'/';
            if (! 
    file_exists($d))
            {
              if (! 
    mkdir($d,0777))
                echo 
    'non creata '.$d;
              else
                echo 
    'creata '.$d;
            }
            else
              echo 
    'esiste '.$d;
            echo 
    '
    '
    ;
          }
          else
            
    $d.='tmp/';
        }
        if (
    $zip->extractTo($d,$p['basename']) )
          echo 
    $d.$p['basename'].' estratto 
    '
    ;
      }
      
    $zip->close();

    Come dicevo, lo script riesce a creare la prima cartella, ma con diritti 0755, quindi se deve creare al suo interno una cartella non riesce e mi da il messaggio 'non creata' (come prevede lo script).
    Ora ho visto che il php ha il safe_mode settato su on e che non posso modificarlo con il file .htaccess.. è quello che mi blocca?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  6. #6
    Il comando mkdir() permette di specificare i permessi, ma rispetta le impostazioni di umask (che di default se non sbaglio e' 0022). Devi usare il comando umask(0) per fare in modo che i permessi specificati nella chiamata a chmod() vengano effettivamente applicati.

  7. #7
    Originariamente inviato da k.b
    Il comando mkdir() permette di specificare i permessi, ma rispetta le impostazioni di umask (che di default se non sbaglio e' 0022). Devi usare il comando umask(0) per fare in modo che i permessi specificati nella chiamata a chmod() vengano effettivamente applicati.
    ho contattato il provider ed hanno fatto una modifica che mi consente di creare cartelle e modificare i diritti di scrittura.. ora mi si è presentato un altro problema..

    riesco a creare la cartella /galleria/test/ ed ad assegnargli i diritti di scrittura.. però poi vado a creare la cartella /galleria/test/prova/ ed il risultato del mkdir() è false... possibile che c'è un limite alle sottodirectory che posso creare? devo fare un altra richiesta al mio provider?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  8. #8
    allora ho provato ad utilizzare l'unica cartella che crea per estrarre i file ma non ci riesce.. cioè i file estratti in cartelle esistenti riesce a farlo, mentre quelli estratti in cartelle create non ci riesce.. come mai? è come se nonostante ci siano i diritti di scrittura non mi faccia scrivere lo stesso...perché? in locale funziona tutto mentre sul maledetto server web no!!

    AIUTO!!


    Codice PHP:

    for ($j=0$j<$zip->numFiles;$j++)
    {
      
    $f=$zip->statIndex($j);
      
    $p=pathinfo($f['name']);
      
    $dirst=explode('/',$p['dirname']);
      
    //$d='../';
      
    $d=$_SERVER['DOCUMENT_ROOT'].'/';
      for (
    $i=0;$i<count($dirst);$i++)
      {                    
        if (
    $dirst[$i]<>".")                    
        {                      
          
    $d.=$dirst[$i].'/';
          if (! 
    is_dir($d))
          {
            if (! 
    mkdir($d,0777,true))
              echo 
    'NON creata '.$d;
            else
            {                         
              echo 
    'creata '.$d;
              if (
    chmod($d,0777))
              {
                echo 
    ' permessi';
              }
              else
              {
                echo 
    ' non permessi';
              }
            }
          }
          else
            echo 
    'esiste '.$d;
          echo 
    '
    '
    ;
          
    $dext=$_SERVER['DOCUMENT_ROOT'].'/';
        }
        else
          
    $dext=$_SERVER['DOCUMENT_ROOT'].'/tmp/';
      }
      if (
    $zip->extractTo($dext,$f['name']) )
        echo 
    $dext.$f['name'].' [B]ESTRATTO[/B] 
    '
    ;
      else
        echo 
    $dext.$f['name'].' NON estratto 
    '
    ;
    }
    $zip->close();
    echo 
    'fine'
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  9. #9
    un'altra cosa che ho notato è che se lancio lo script una volta al primo file che deve estrarre mi dice che crea la cartella e poi nei seguenti file mi dice che è esistente. Se rilancio una seconda volta lo script al primo file che prova ad estrarre mi ridice che crea la cartella come se non esistesse, quando invece esiste (verificato con filezilla!).. non capisco..

    IDEE?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  10. #10
    La soluzione era semplice.. hanno disattivato l'opzione safe_mode e tutto ha funzionato.. una cosa che avevo pensato dall'inizio e non capisco come invece il mio provider ci sia arrivato dopo giorni di test.. mha!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

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.