PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 15-01-2010 12:05:05

ProtoAstre
Membre
Inscription : 15-01-2010
Messages : 2

Gérer Warning: mkdir() [function.mkdir]: Permission denied

Bonjour

Je débute en php, et je bidouille plus que j'écris.
Bref j'ai récupéré un explorateur de fichier en php, il est génial, il s'agit de encode explorer
Le fichier index.php installé sur la racine du dossier exploré sur mon serveur 2003 géré par IIS fonctionne à merveille.

Un seul problème se pose avec "l'upload"
En fonction des droits sur les dossiers, certains utilisateurs peuvent écrire et d'autre pas.
Si j'upload un fichier dans un dossier où j'ai les droits > ça passe
Si j'upload un fichier dans un dossier où je n'ai pas les droits > ça passe pas et j'ai bien un retour avec un message d'erreur (Erreur lors du changement de dossier! avec $_ERROR = $_LANG["failed_upload"];) grace à ce code

function uploadFile($location, $userfile)
  {
    global $_CONFIG;
    global $_ERROR;
    global $_LANG;

    $name = basename($userfile['name']);
    if(get_magic_quotes_gpc())
      $name = stripslashes($name);

    $upload_dir = $location->getFullPath();
    $upload_file = $upload_dir . $name;

    if(!is_uploaded_file($userfile['tmp_name']))
    {
      $_ERROR = $_LANG["failed_upload"];
    }
    else if(!@move_uploaded_file($userfile['tmp_name'], $upload_file))
    {
      $_ERROR = $_LANG["failed_move"];
    }
    else
      chmod($upload_file, 0755);
  }
     

Donc c'est parfait, mais

Si je crée un dossier dans un dossier où j'ai les droits > ça passe
Si je crée un dossier dans un dossier où je n'ai pas les droits > ça passe pas et j'ai bien un retour avec un message d'erreur (Echec de création de dossier avec $_ERROR = $_LANG["new_dir_failed"])

mais en plus j'ai Warning: mkdir() [function.mkdir]: Permission denied in G:\services\Exploitation\public\index.php on line 841

Le code est le suivant

  function newFolder($location, $dirname)
  {
    global $_ERROR;
    global $_LANG;

    if(strlen($dirname) > 0)
    {
      $forbidden = array(".", "/", "\\");
      for($i = 0; $i < count($forbidden); $i++)
        $dirname = str_replace($forbidden[$i], "", $dirname);
      if(!mkdir($location->getDir(true, false, 0).$dirname, 0777))
        $_ERROR = $_LANG["new_dir_failed"];
      else if(!chmod($location->getDir(true, false, 0).$dirname, 0777))
        $error = $_LANG["chmod_dir_failed"];
    }
  }

J'imagine que l'on peut faire disparaitre "Warning: mkdir() [function.mkdir]: Permission denied in G:\services\Exploitation\public\index.php on line 841".
Merci pour votre aide, je suis tout ouïe !

Dernière modification par ProtoAstre (15-01-2010 12:05:42)

Hors ligne

#2 16-01-2010 07:02:04

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Gérer Warning: mkdir() [function.mkdir]: Permission denied

Voici une fonction qui te permettrai de savoir si tu peux ou non exécuter mkdir sur dans le répertoire :
http://www.php.net/manual/fr/function.fileperms.php

Hors ligne

#3 18-01-2010 10:29:31

ProtoAstre
Membre
Inscription : 15-01-2010
Messages : 2

Re : Gérer Warning: mkdir() [function.mkdir]: Permission denied

Ok, merci pour cette info, mais c'est pas facile ...:)

Hors ligne

Pied de page des forums