probleme avec upload via php

Eléphant du PHP | 369 Messages

31 août 2009, 17:55

fuzzy j'avais vu cette erreur là, et j'ai fait un edit du coup! mais là encore ça fonctionnne pas |*()
Crotte ! J'ai perdu 1 Cents € ;(

Dans ton fichier php: (c'est pas de moi, pas le temps) sauf les commentaires...
'fin je l'ai tellement modifié qu'il ne parait plus être le même lol

> Ce fichier si on admet qu'il s'appel index.php

Que la clef est : uploaded
Que le répertoire de réception est "Racine"
Que ...

Fais un copié/Collé total du script et lance le SANS aucune modif
Ca doit marcher sinon y a un truc bizarre...
<?php 
// Vérifie l'existance du passage de formulaire
// Si TRUE alors Upload
//
if(isset($_FILES['uploaded']))
{ 
   $target = "chemin/".basename($_FILES['uploaded']['name']) ; 

   // Point de test
   //
   print_r($_POST); 
   print_r($_FILES); 

   // Si FALSE : suivit du message
   //
   if (!move_uploaded_file($_FILES['uploaded']['tmp_name'],$target)) die("can't ...");

   // Le UP a marché,
   // Rien n'empèche de changer les property du fichier
   //
   // .
   // .
   // .
} 

// Comporte les éléments, traite $_FILES
//
else
{ 
   // Destination : index.php
   //
   $rec = "index.php";

   $cde = "";
   $cde .= "<form enctype=\"multipart/form-data\" action=\"".$rec."\" method=\"POST\">\n"; 
   $cde .= "   File:<input name=\"uploaded\" type='file\" />\n";
   $cde .= "   <input type=\"submit\" value=\"Upload\" />\n"; 
   $cde .= "</form>\n"; 

   // ...je te laisse deviner 
   //
   echo $cde;
} 

?>
Provenait (à l'origine) de CCM @+

EDIT: Crotte chuis à la bourre, problème résolu lol

Mammouth du PHP | 985 Messages

31 août 2009, 18:00

Sinon met le path exact du dossier upload...
du style:
$strDirectory = '/var/www/recrutement/';
Pour le connaître:
echo $_SERVER["DOCUMENT_ROOT"];
Ou si ton dossier upload est à la racine de ton site, tout simplement:
<?php
$arrayFiles = $_FILES[nom_du_fichier];
$strDirectory = $_SERVER["DOCUMENT_ROOT"] . '/recrutement/';
echo '- Fichier Distant: ' . $strDirectory.$arrayFiles['name'] . ' - Fichier Local: ' . $arrayFiles['tmp_name'];
move_uploaded_file($arrayFiles['tmp_name'], $strDirectory.$arrayFiles['name']);
?>
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 57 Messages

31 août 2009, 19:38

Merci pour vos réponses, je suis rentré chez moi, mais promis je teste ça dès demain matin.

Bonne soirée et à demain! :wink:

Eléphant du PHP | 57 Messages

01 sept. 2009, 08:46

Me voilà de retour! J'espère que la nuit fût bonne! :)

Dr@ke : j'ai fait cette commande :
echo $_SERVER["DOCUMENT_ROOT"];
J'ai pour résultat : C:\inetpub\wwwroot\monsite.fr et en me servant de tes corrections (mon répertoire d'upload est à la racine) malheureusement ça ne fonctionne pas...

Fuzzy : j'ai testé ton fichier index.php qui ne marche pas non plus, mais si je ne dit pas de bêtises, celui-ci ne fait pas de référence à un quelconque upload.php et renvoie juste à lui-même, non?

Mammouth du PHP | 985 Messages

01 sept. 2009, 08:58

Dr@ke : j'ai fait cette commande :
echo $_SERVER["DOCUMENT_ROOT"];
J'ai pour résultat : C:\inetpub\wwwroot\monsite.fr et en me servant de tes corrections (mon répertoire d'upload est à la racine) malheureusement ça ne fonctionne pas...
Ok ton site est hébergé sous windows...
Et pour les droits d'écritures internes à windows?
(système, utilisateurs, administrateurs, tout le monde...)

Sinon essaye ça:
<?php
$arrayFiles = $_FILES[nom_du_fichier];
$strDirectory = $_SERVER["DOCUMENT_ROOT"] . '\recrutement\';
echo '- Fichier Distant: ' . $strDirectory.$arrayFiles['name'] . ' - Fichier Local: ' . $arrayFiles['tmp_name'];
move_uploaded_file($arrayFiles['tmp_name'], $strDirectory.$arrayFiles['name']);
?>
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 57 Messages

01 sept. 2009, 09:21

Bon, ni comme ça!

Sinon pour les droits d'écriture, question de newb' mais si j'ai désactivé les comptes d'utilisateur normalement c'est bon? (je suis sous Vista)

Mammouth du PHP | 985 Messages

01 sept. 2009, 09:28

Jamais testé easyPhp sous windows...
Mais sous Vista il est impératif d'ouvrir ton serveur en droit admistrateur, donc au pire ferme le, clique droit sur le raccourci ou éxcutable -> choisi : ouvrir en tant qu'administrateur.
Ensuite si tu tests l'upload direct de ton serveur, les droits ne devraient pas poser de problème je pense pour le moment...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 369 Messages

01 sept. 2009, 09:36

Fuzzy : j'ai testé ton fichier index.php qui ne marche pas non plus, mais si je ne dit pas de bêtises, celui-ci ne fait pas de référence à un quelconque upload.php et renvoie juste à lui-même, non?
Il gère tout en page unique.
>Autrement dit il affiche le formulaire en index.php
>Et le renvoit en index.php pour upload final

Si ca marche pas... Y a vraiment un truc bizarre lol
T'aurais pas un .htaccess qui se ballade? si c'est le cas delete le et rééssaie...
on sait jamais ;)

@+ ;)

EDIT: Un truc con lol Que revoit la fonction is_dir(Ton_Repertoire) ?

Eléphant du PHP | 57 Messages

01 sept. 2009, 09:50

Dr@ke : là je ne te suis plus vraiment, mes connaissances montrent leurs limites... :cry:

Fuzzy : OK, pourtant ça ne marche pas, non, il n'y a pas d'htaccess et plus surprenant is_dir ne m'affiche rien! :evil:
Euh, ça craint si je poste ici le lien du phpinfo() que j'ai fait pour mes vérifs ?
Modifié en dernier par boblenain le 01 sept. 2009, 09:53, modifié 1 fois.

Mammouth du PHP | 985 Messages

01 sept. 2009, 09:50

Vista, comme XP, possède un compte nommé "Administrateur" mais il est caché et non activé par défaut.
Pour que ce compte apparaisse dans la liste des utilisateurs à l'écran d'accueil, la méthode est différente selon que l'on utilise une version "familiale" de Vista ou une version professionnelle (ou Intégrale).

Pour les versions Pro (ou Intégrales) le plus simple est de passer par Utilisateurs et groupes locaux.

* Dans la barre de recherche du menu Démarrer, taper lusrmgr.msc et valider.
* Cliquer sur Utilisateurs.
* Dans la fenêtre qui est à droite, faire Administrateur puis Propriétés et décocher la case "Le compte est désactivé
Au pire démarre vista en session administrateur, et ensuite test l'upload (direct de ton serveur) avec le dernier code que je t'ai donné, et ensuite avec simplement './recrutement/'.
Au moins cela réglera le problème des droits...

PS: Juste pour tester évidemment...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 369 Messages

01 sept. 2009, 10:06

Re,
Fuzzy : OK, pourtant ça ne marche pas, non, il n'y a pas d'htaccess et plus surprenant is_dir ne m'affiche rien! :evil:
Euh, ça craint si je poste ici le lien du phpinfo() que j'ai fait pour mes vérifs ?
is_dir(xxx); revoit un boolean donc :
echo is_dir(Ton_Répertoire_De_Réception) ? "OK, le répertoire existe !" : "Niark, niark, pas de répertoire à ce nom !!!");
Tu sauras, ainsi, si le répertoire dont tu te sert pour transférer le fichier éxiste ou pas.

@+;)

Eléphant du PHP | 57 Messages

01 sept. 2009, 10:35

Fuzzy : j'ai bien mon répertoire, j'avais effectivement oublié l'echo... Donc,
 echo is_dir(recrutement);
renvoie pour réponse : 1 (c'est logique, mon répertoire existe! le booléen est donc à 1)

Mammouth du PHP | 985 Messages

01 sept. 2009, 10:50

Met un fichier test.txt vide dans le dossier recrutement et ensuite test ceci:
<?php
             if($fichier = fopen("./recrutement/test.txt","ab")) {
                fwrite($fichier, 'ok ');
                fclose($fichier);
               }
             else {
                echo 'Erreur';
               }
?>
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 57 Messages

01 sept. 2009, 11:02

la sentence est tombée : Erreur

Mammouth du PHP | 985 Messages

01 sept. 2009, 11:06

Hm désolé mieux comme ca, histoire d'être certain:
( vue que tu es sous windows, et que je ne suis pas certain comment EasyPhp interprète le path../)
<?php
             if($fichier = fopen('./recrutement/test.txt','ab')) {
                fwrite($fichier, 'ok ');
                fclose($fichier);
               }
             elseif($fichier = fopen('.\recrutement\test.txt','ab')) {
                fwrite($fichier, 'ok ');
                fclose($fichier);
               }
             elseif($fichier = fopen('recrutement\test.txt','ab')) {
                fwrite($fichier, 'ok ');
                fclose($fichier);
               }
             else {
                echo 'Erreur';
               }
?>
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.