Mkdir : problème d'ecriture sur serveur

Fermé
fabrice - 24 janv. 2005 à 11:32
 ali - 25 mars 2005 à 11:36
Bonjour,

Avec un formulaire php, je crée des dossiers
sur un seveur avec la commande mkdir...
Dans mon script j'écris ça :
mkdir ("../img/truc/".nomTruc, 0777);

Ensuite mon script est censé uploader des fichiers
dans ce dossier crée. Le problème est qu'apparemment
le dossier n'a pas les droits nécessaires pour que je puisse
ecrire dedans... Pourtant dans ma ligne mkdir, je
met bien 0777...qui est censé donner tous les droits pour
le dossier.

Que faire? Est-ce que cela vient du serveur, ou est-ce que c
mon script?

A noter qu'en local ca marche impeccable.

Merci pour vos réponses

4 réponses

Corrige-moi si je dis une bêtise, je n'ai plus fait de PHP depuis quelques temps... Mais il semble qu'à l'époque on devait uploader le fichier dans un répertoire temporaire du serveur PHP et ensuite le copier vers notre répertoire. Car lorsque l'utilisateur valide le formulaire, c'est le protocole HTTP qui fait en sorte que le fichier soit transmis dans la requete et stocké dans un endroit temporaire.

Soient la variable d'environnement HTTP_POST_VARS et la variable "fichier" définie dans ton formulaire :

HTTP_POST_VARS["fichier_name"] : nom du fichier sur le poste client
HTTP_POST_VARS["fichier"] : nom du fichier uploadé sur le serveur
HTTP_POST_VARS["fichier_size"] : taille en octet

La variable "$cfg_upload_path" est le chemin du répertoire dans lequel tu voudrais écrire ton fichier, et la variable PHP $

if(!is_writeable($cfg_upload_path)){
    print("Le répertoire n'est pas accessible en écriture.<br>\n");    
}

#$fichier est remplacée par le nom du fichier sur le serveur 
# et non plus sur le client
$fichier = HTTP_POST_VARS["fichier"] ;

copy($fichier,$cfg_upload_path.$HTTP_POST_VARS['x_fichier_name'])

# supprimer le lien physique avec le fichier temporaire uploadé
unlink($fichier);


J'espère que ca t'aidera sinon envoie-nous un peu de code pour qu'on voit plus précisément ce que tu fais.
0
Merci de ta réponse... Et oui tu as raison par rapport à l'upload
de fichier (en tout cas je fais comme ça aussi).

Mais mon problème est autre...et concerne l'écriture dans le dossier. Ce que je veux faire c'est "Creer un dossier dynamiquement qui za les droit nécessaire pour uploader
un fichier"...
Je dis ca car l'upload fonctionne. Si j'upload vers un dossier
que g créer à la main et dans lequel il y'a les droits 777 ca marche.

Merci, j'attends vos réponses ;)

Fabrice
0
Par defaut les droits utilisés sont 777 donc tu peux omettre ce paramètre. La commande mkdir te renvoie un booléen : as-tu testé s'il était vrai ou faux ? Peut-être que tu peux aussi regarder dans une fenetre de commande (commande "ftp <nom_de_ton_site>") la différence entre un répertoire créé par un script et un répertoire créé à la main (commandes "cd <ton_rep> et "ls -l"). Tu verras peut-être une différence...
0
Ok j'ai un peu plus de détails....
L'hébergeur ou je suis (sivit) gère le php en safe mode,
ce qui veut dire que certaine commande, comme
le mkdir ne fonctionne pas... ca craint en fait...
Du coup il faut que je vois avec eux, à moins
que qqn connaisse une façon de pouvoir contourner
le safe mode pour quelques fonctions comme mkdir() ou unlink().
Merci.
Merci de ton aide Alex!
0
On peut toujours trouver une solution. Dans la série "solutions tordues" je te propose d'ouvrir une connexion FT sur le serveur où ton site est hébergé. Là tu auras une authentification à fournir et tu auras les droits pour créer un répertoire... C'est tordu mais peut etre que ca peut marcher !
0
Tout à fait ok avec toi. Mais mon souhait est de créer des dossiers
de façons dynamiques...

Merci en tout cas.
0
J'ai peut etre pas été clair dans ma solution :-/ Je parlais d'ouvrir une connexion FTP à partir d'un script PHP ! Tu as des fonctions ftp_connect() et ftp_mkdir() donc ce ne devrait pas etr eproblematiqaue de faire ce que tu désires à moins que sivit.fr ne l'autorise encore pas !
0
fabrice > alex
25 janv. 2005 à 10:09
Ok je n'avais pas compris.
En effet tu as raison, je viens de regarder je peux utiliser ça
et je pense que ca va marcher....
Merci pour tes réponses Alex!
0
Mnu Messages postés 97 Date d'inscription mercredi 11 avril 2001 Statut Membre Dernière intervention 9 janvier 2008 16 > fabrice
26 janv. 2005 à 00:29
Salut,

Moi aussi j'ai été confronté à ce problème, et je l'ai résolu en passant par un serveur FTP et en utilisant les fonctions FTP de php. C'est pas beaucoup plus lourd ni plus tordu, et ça m'a permis de créer dynamiquement l'arborescence des fichiers que j'uploadais (et de changer les noms des fichiers pour rendre tout ça cohérent)... Bref, en utilisant aussi l'upload FTP, je suis assez content du résultat...

J'ai utilisé le tuto suivant:

http://www.laltruiste.com/document.php?url=http://www.laltruiste.com/coursphp/fonction_ftp.html

Si ça peut t'aider...

0