Vous n'êtes pas identifié(e).
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
$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
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
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
Ok, merci pour cette info, mais c'est pas facile ...:)
Hors ligne