Page 1 sur 2
Probleme move_uploaded_file()
Posté : 18 oct. 2011, 09:38
par Mirrix
Salut tout le monde,
Bon alors voila j'ai un petit soucis. Pour mon boulot j'ai développé un site afin de gérer le stockage de fichier de configuration. Le site permet à l'utilisateur de remplir un formulaire et d'y uploader le fichier de configuration correspondant. Ce fichier est enregistré sur un disque en réseau accessible depuis n'importe quel poste de mon boulot avec les droit en fonction de la division dans laquelle travail l'utilisateur.
Bref, en local tout marchais bien, tant l'upload que le download et même la suppression. Après nous l'avons mis en réseau, hébergé sur un serveur IIS, avec un phpmyadmin et tout le tralala. Le site est parfaitement accessible, tout marche sauf la fonction d'upload, de download et la suppression.
Voila le warning que j'obtiens :
Warning: move_uploaded_file(L:\Fichiers de configurations/test.txt): failed to open stream: No such file or directory in D:\Gilbert\cible.php on line 83
Warning: move_uploaded_file(): Unable to move 'D:\Intranet\upload_tmp\phpB2F.tmp' to 'L:\Fichiers de configurations/test.txt' in D:\Gilbert\cible.php on line 83
Alors si l'un de vous a une idée ... ne pas hésité
Merci d'avance !!
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 10:18
par moogli
salut,
essai :
is_writable
en général on évite les espaces dans les noms de fichiers / dossiers.
sous c'est \ pas / bien que cela ne semble pas poser de soucis.
pour rappel
ool is_writable ( string $filename )
retourne TRUE si filename existe et est accessible en écriture. L'argument peut être le nom d'un dossier, vous permettant ainsi de vérifier si le dossier est accessible en écriture.
N'oubliez pas que PHP accède aux fichiers avec les mêmes autorisations que l'utilisateur qui fait tourner le serveur web (souvent, c'est 'nobody', personne). Les limitations du safe mode ne sont pas prises en compte.
@+
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 11:30
par Mazarini
Comme Moogli je pense que le problème est lié à "L:\Fichiers de configurations"
Sous toutes réserves, il me semble que le L: (répertoire attaché ?) pose des problèmes avec IIS. Mais ca reste à vérifier en faisant un test avec C: par exemple.
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 14:17
par Mirrix
L: est un disque en réseau accessible par tout le monde. Mais bon j'ai essayé avec d'autre lecteurs et le problème est le même.
Par contre je vois pas trop comment utiliser is_writable
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 14:50
par moogli
heu ben
<?php
if (is_writable("L:\Fichiers de configurations")) {
echo 'c\'est bon on peux écrire';
}
else echo 'ha ba non en fait XD';
?>
@+
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 15:06
par Mazarini
IIS n'est pas forcément tout le monde en tant qu'utilisateur windows.
Tu peux essayer la page de Moogli en ligne de commande et via un navigateur.
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 15:20
par Mirrix
Et le resultat est ... "ha ba non en fait XD"
Donc c'est un problème de droit. Moi en tant qu'utilisateur sur ma machine j'ai le droit d'écrire dans ce dossier, donc ca voudrait dire que c'est l'utilisateur "site web" (je sais pas comment l'appeler) qui ne peut pas. Je vois pas trop comment modifier ca du coup ... c'est le serveur ou alors complètement autre chose ?
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 16:07
par Mazarini
Tu peux tester en plus avec la fonction file_exists à la place de is_writable.
Si possible, essayes d'éliminer les problèmes potentiels de blancs dans les noms et de disque réseau en utilisant un répertoire c:\test dans un premier temps ou dans l'arborescence du site.
Pour les autorisations, tu peux regarder comment elles sont sur les répertoires ou se trouve tes pages PHP.
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 16:31
par Mirrix
Quand j'ai testé la fonction file_exists() sur un fichier dans 'L:\Fichiers de configurations' ca ne marchais pas. J'ai ressayé en testant un fichier sur D: (la ou est mon systeme d'exploitation, sur C: c'est dos) et ca ne marchais toujours pas.
Par contre quand j'ai testé en faisant ca :
if (file_exists('./cible.php'))
{
echo 'c\'est bon on peux écrire';echo '<br>';
}
else
{
echo 'ha ba non en fait XD'; echo '<br>';
}
Ca a marché nickel (cible.php etant un fichier .php du site)
Il semblerait que je puisse agir qu'au niveau du serveur et pas en dehors ... nan ?
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 16:42
par Mazarini
A priori, IIS doit être un utilisateur local. Je ne suis pas un pro de l'administration. Ce n'est pas illogique pour des problèmes de sécurité.
Re: Probleme move_uploaded_file()
Posté : 18 oct. 2011, 16:44
par Mirrix
Ouais du coup faut voir si je peux l'avoir en utilisateur moins locale.
Ça peut créer des trous de sécurité ?
Sinon il y aurait une autre méthode pour faire ce que je veux ?
Re: Probleme move_uploaded_file()
Posté : 19 oct. 2011, 11:59
par moogli
un utiliser exec pour lancer un script bash qui va faire la copie
sinon voir dans les droits utilisateurs si y a moyen d'écrire dans L pour l'utilisateur qui fait tourner iis (et le site qui utilise php) tu doit pouvoir le voir dans le gestionnaire de taches (onglet processus).
après je suis assez mauvais sur l'administration et encore plus sur iis
@+
Re: Probleme move_uploaded_file()
Posté : 19 oct. 2011, 14:03
par Mirrix
Comme j'arrive a uploader mes fichiers sur le serveur je vais faire ca. Par contre j'aurais besoin en même temps de transférer le dossier qui est sur le serveur sur mon pc en local mais je ne vois pas comment faire.
Est ce possible de le faire avec FTP : transférer un dossier du serveur vers le machine en local ?
Re: Probleme move_uploaded_file()
Posté : 19 oct. 2011, 14:22
par Mazarini
Tu peux surement lire le disque du serveur directement si le serveur pouvait avoir un partage sur ton disque en local. Sinon, tu peux récupérer les fichiers en ftp (en installant un serveur) voir même en http.
Re: Probleme move_uploaded_file()
Posté : 19 oct. 2011, 15:12
par moogli
je dirais dans le même genre installer un serveur FTP sur ton pc a toi (bon faut qu'il soit accessible sur le réseau).
Après tu utilise l'extension
FTP de php pour envoyer le fichier sur ton ordi !
@+