upload fichier

Mammouth du PHP | 514 Messages

06 mai 2008, 08:56

Bonjour,

j'essaie d'uploader un fichier, puis de le copier dans un répertoire en amont de mon www.


en gros :

www
userfiles

sont au même niveau dans l'arborescence. Je suis sous windows, et mon compte a les droits d'accès au répertoire. Voici l'erreur renvoyée :

failed to open stream: Permission denied in D:\wamp\www\packages\FileTools\classes\FileTools.class.php

Une solution ?

Merci à vous.

ViPHP
ViPHP | 2287 Messages

06 mai 2008, 09:18

Je suis sous windows, et mon compte a les droits d'accès au répertoire. Voici l'erreur renvoyée :

failed to open stream: Permission denied in D:\wamp\www\packages\FileTools\classes\FileTools.class.php
Ton compte oui, apache non...
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 514 Messages

06 mai 2008, 09:21

Okay, et comment je fais pour dire à apache d'utiliser un compte particulier ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 mai 2008, 09:33

Apache va utiliser son compte.
Le principe n'est pas de demande à Apache de changer de compte, mais à toi de donner les droits à Apache ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 175 Messages

06 mai 2008, 09:33

si tu as installe wamp en service tu peux preciser un compte particulier pour le lancer.
dans services, propriete de wampapache, onglet connexion

Mammouth du PHP | 514 Messages

06 mai 2008, 09:35

Apache va utiliser son compte.
Le principe n'est pas de demande à Apache de changer de compte, mais à toi de donner les droits à Apache ;)
Okay, j'ai cherché dans les users de Windows, il n'y a aucun compte pour apache ...

Je tente la solution des services, mais je n'ai aucune doc à ce sujet.

ViPHP
ViPHP | 2287 Messages

06 mai 2008, 09:38

Okay, et comment je fais pour dire à apache d'utiliser un compte particulier ?
Désolé, cela relève de l'utilisation de windows et je me refuse à en faire le support technique par principe. Je t'aurais répondu si tu avais utilisé un système libre.

Je te confirme aussi que le conseil de Zeus est effectivement la voie à suivre ;-)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 514 Messages

06 mai 2008, 09:45

Désolé, cela relève de l'utilisation de windows et je me refuse à en faire le support technique par principe. Je t'aurais répondu si tu avais utilisé un système libre.
Si ça tenait qu'à moi, je bosserais pas sur un serveur Windows avec php ...

Bon, quelqu'un sait-il quel compte utilise apache lorsqu'il charge sous Windows ?

Merci de votre aide.

Pour info et pour test, j'ai donné tous les droits aux comptes admin et system, ça n'a pas réglé le problème ...

Eléphant du PHP | 175 Messages

06 mai 2008, 09:50

c'est le compte sytem par defaut...

Mammouth du PHP | 514 Messages

06 mai 2008, 10:02

Bon, après vérification, le compte system a tous les droits ...

Allez, c'est parti pour une journée à se concentrer sur des problèmes auxiliaires.

Merci de votre aide, je posterai ma réponse au passage.

Eléphant du PHP | 175 Messages

06 mai 2008, 10:18

dans ce message d'erreur tu n'a pas plus d'informations?

Code : Tout sélectionner

Permission denied in D:\wamp\www\packages\FileTools\classes\FileTools.class.php
En general il est indique quelle commande plante, le script incrimine et le numero de ligne...

Mammouth du PHP | 19672 Messages

06 mai 2008, 10:25

Le problème n'est pas là, je suis absolument certain que Mcorgnet sait parfaitement à quel endroit de son code ça bloque.

Le problème est que la commande sur un endroit qui est en dehors du répertoire docroot indiqué dans le httpd.conf. il faut donc ajuster ce fichier de configuration pour permettre l'utilisation d'un autre répertoire au besoin
Je n'ai pas mon bouquin sur Apache avec moi mais tu pourras trouver ça dans la doc Apache à mon avis
:-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 514 Messages

06 mai 2008, 10:31

Bon, pour expliquer tout mon problème :

je gère des fichiers uploadés par des utilsateurs. Chaque utilisateur ne doit accéder qu'à ses fichiers, et ce depuis mon application développée en php.

Je n'ai songé qu'à deux solutions, pour le coup :

- enregistrer le fichier dans la base de données
- enregistrer le fichier dans un répertoire innaccessible aux utilisateurs, mais accessible à apache et php

J'ai préféré la seconde, avec un script qui me ramène le fichier dans un répertoire temporaire le temps de son téléchargement.

Si vous connaissez d'autres solutions, je suis preneur. Sinon, je continue de chercher ...

Merci encore de votre aide.

Mammouth du PHP | 19672 Messages

06 mai 2008, 10:34

Garder les répertoires dans l'arborescence web mais utiliser un .htaccess pour limiter l'accès uniquement à Apache/PHP. À froid comme ça je n'ai pas la procédure exacte mais j'explorerais cette voie avant tout le reste :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 175 Messages

06 mai 2008, 10:34

je veux bien mais le message serait

Code : Tout sélectionner

Permission denied in D:\wamp\USERFILES\...
or la le message est sur le fichier de class...
donc soit on a pas le bon message d'erreur
soit:
- system n'a effectivement pas les droits sur le fichier de classe
- une directive dans le httpd.conf ou le php.ini bloque l'acces a un des repertoires au process php
- la commande php utilisee est interdite
- soit on a pas assez d'infos pour aider, d'ou ma question ;)

et desole j'ai aussi tendance a explorer toutes les pistes possibles ;)

Edit:
comme je poste apres la bataille, je complete....
ta solution est la bonne, et pour avoir a gere un intranet avec un wampserver je n'ai jamais eu de pb pour "jouer" avec des fichiers externes au documentroot...