Aide - Recherche - Membres - Calendrier
Version complète : Safe Mode et copy()
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
Neity
Bonjour, le serveur sur lequel je veux uploader un fichier tourne en SAFE MODE. Du coup, il vérifie les UID employés.

J’utilise en PHP un script qui insert des fichiers en ligne via la méthode copy(), et qui, si le repertoire n’existe pas, le crée à la volée. Toutefois, j’obtiens systématiquement l’erreur dûe au SAFE MODE, et je ne vois pas comment contourner ce problème.

J’ai lu qu’on pouvait éviter ça en se connectant en « root » et en utilisant la méthode chown() mais cette manipulation demandant mon intervention je ne peux pas y trouver une solution. Comment puis-je faire passer la méthode copy() malgré le SAFE MODE ?

J’ai remarqué que les repertoires crées via PHP avait ces règles de droits d’accès : 340
Si je fais un chmod(777), le repertoire passe en 410

Erreur obtenue :

QUOTE
Warning: copy(): SAFE MODE Restriction in effect. The script whose uid is 596 is not allowed to access /usr/local/sites/site621/web/files/membres/608 owned by uid 48 in /usr/local/sites/site621/web/chimaera/gestion_membres.php on line 105

Warning: copy(../files/membres/608/drapeau_fr.gif): failed to open stream: Permission non accordée in /usr/local/sites/site621/web/chimaera/gestion_membres.php on line 105


Script :
CODE


     $folder = "../files/membres/".$data_check["id"];

     if (!is_dir($folder)) {

           mkdir($folder, 755);

     }

     $folder .= "/";

     $filename = $_FILES["file"]["name"];

     $upload = copy($_FILES["file"]["tmp_name"], $folder.$filename);
Ldo
et si tu utilisait move_uploaded_file a la place de copy ?
Neity
Je viens d'essayer mais malheureusement j'ai le même problème :

QUOTE
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 596 is not allowed to access /usr/local/sites/site621/web/files/membres/579 owned by uid 48 in /usr/local/sites/site621/web/chimaera/gestion_membres.php on line 105
qwix
Avec le safe mode tu ne pourras pas uploader, il faut demander à ton hébergeur de le désactiver. Le safe_mod ne sert était une tentative de sécurisation des hébergement mutualisé mais je crois que son utilité a été fortement contestée.

smile.gif
Neity
Oui c'est ce que j'avais compris et je suis d'accord avec les contestataires vu que PHP perd de son dynamisme avec cette option. smile.gif

Merci pour l'information, et pour le lien. smile.gif
Neity
Ah par contre, j'avais cherché une autre solution entre temps et je vais l'adopter, mais pour cela il faut que je puisse faire ceci :

$file_globbed = glob("folder/".$id."_*.*");

Seulement, comme je m'en doutais ca ne marche pas (j'espérais que le * fonctionne comme un % sur SQL). Existe-t-il un moyen de récupérer tous les fichiers commencant par un element donné ? (ici l'identifiant)
qwix
Il me semble que glob prend en paramètre un modèle en expression régulière (mais je suis pas sur là :oops:) il te suffit donc de faire le bon pattern wink.gif

smile.gif
jep
QUOTE
glob() recherche tous les chemins qui vérifient le masque pattern, en suivant les règles utilisées par la fonction glob() de la libc, qui sont les mêmes que celles utilisées par le Shell en général. Aucun remplacement de tilde (~) ou de paramètre n'est fait.


:wink:
Neity
Ah Merci, j'aurais dû penser à voir la définition smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.