8722 sujets

Développement web côté serveur, CMS

Bonjour,

Je souhaiterais savoir si par défaut un serveur (Linux sous Debian) enregistre en log quelque part ou accessible par commande la liste des fichiers uploadé un jour donné.

Merci à vous Smiley smile
Bonjour,

Il faudrait préciser de quoi nous parlons. Upload sur un site web ? Sur le FTP qui alimente le site ?
Si on parle d'un upload de fichier sur une page d'un site, il s'agit d'un "post" comme un autre.
Personnellement, je rajouterai simplement moi même un log dans le code de la page.
Autrement, tu peux regarder les accès dans les logs d'Apache : /var/log/apache2

Cordialement,
Modifié par SteeveLefort (30 Aug 2013 - 12:21)
@SteeveLefort : merci ! En effet il s'agit d'uploads à partir d'un site web. Nous avons des utilisateurs qui nous assure avoir envoyé certains documents sur le site ; nous n'avons aucune trace visible ; tant sur la BDD que sur le serveur (présence du fichier).

C'est pourquoi nous aurions aimé pouvoir consulter des logs de ces flux.

A présent je contourne le problème en modifiant un fichier xml qui sert de monitoring. Mais pour les anciens flux je n'ai aucune trace.
Dans les logs d'apache, l'upload de fichier se matérialise comme une requête POST. Mais comme les data ne sont pas loggées, on ne peut pas faire la différence entre un upload et un envoi de formulaire classique.

Tu peux peut-être tenter le coup en regardant les logs du système de fichier. Les uploads sont d'abord stockés dans un dossier temporaire avant d'être déplacés dans les dossiers du site web à l'appel d'une fonction comme move_uploaded_file, à voir dans le php.ini ou dans les définitions de vhosts où ce répertoire temporaire se trouve.

A partir de là, tu pourras peut-être voir si une erreur est survenue en croisant avec le log des erreurs php par exemple.
Modérateur
Salut,

1. Est ce que le formulaire pour l'upload de fichiers à ce type de déclaration en html ? Est ce que le document html est valide ?

<form method="post" action="une-page.php" enctype="multipart/form-data">
<!-- etc. -->
</form>

2. S'il y a du JS, avez vous essayé de couper le JS et tester ? Avez vous essayé d'uploader toutes sortes de fichiers sans le JS ? Est ce que le comportement attendu fonctionne ?
3. Est ce que vous obtenez des valeurs concrètes en faisant ceci ?

print_r($_FILES);
//...
echo move_uploaded_file ( $_FILES["champ_upload"]["tmp_name"], string $destination ); //doit retourner 1 ou true de mémoire
echo is_uploaded_file($_FILES['champ_upload']['tmp_name']); //doit retourner 1 ou true de mémoire

4. Est ce qu'il y a une vérification complète des données du formulaire côté serveur (post & files) ?
5. Est ce qu'il y a une vérification complète des données rentrées en base ?
6. Est ce que le serveur a Klamav par exemple ? Si oui que dit il ?

Si sur votre machine ou sur une autre machine ça fonctionne, je ne vois pas trop le but de la manœuvre. Le flicage est en base de données.
Modifié par niuxe (31 Aug 2013 - 11:57)
niuxe a écrit :
Si sur votre machine ou sur une autre machine ça fonctionne, je ne vois pas trop le but de la manœuvre. Le flicage est en base de données.


Le but de ce flicage est de pouvoir dire à l'utilisateur qui jure avoir envoyer tel document (car nous avons une date butoire) si oui il y a bien eu un souci ou non te fout pas de nous Smiley smile !

Je pensais notamment à la deuxième réponse car c'est le seul qui rencontre des problèmes avec notre application.

Pour les autres points que tu as soulevé je n'ai pas bien compris le but ; ce que je souhaite ce sont les logs qui sert d'historique sur les flux uploads.

Je n'ai aucune interface d'administration hormis du commande sous Linux ; je pense qu'il me reste deux solutions :

- une ligne de commande qui pourrait me renvoyer la liste des flux (je ne la connais pas)
- un fichier de logs qui contient l'historique des flux (je ne le connais pas non plus Smiley decu )

Merci à tous.
Modérateur
Bonjour Mini truc,

J'ai à peu près saisi ton souci. Les points que j'ai soulevé sont essentiels afin d'éviter les bugs de l'application.

Si c'est un seul client qui remonte ce souci, il ne s'est pas utilisé ton application ou qu'il fait semblant de ne pas savoir utiliser l'application.

Je ne pense pas que les logs d'apache soient une bonne idée en soit. Je parle de retranscrire (parser et écrire). Quand on voit ce genre de ligne qui n'a rien à voir avec un formulaire, c'est un peu fastidieux à faire (un gouffre....) :

127.0.0.1 - - [03/Sep/2013:10:59:34 +0200] "GET /form/ HTTP/1.1" 200 738 "http://localhost/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:23.0) Gecko/20100101 Firefox/23.0"

Quand à un upload de fichiers, on voit aucune trace d'envoi :


127.0.0.1 - - [03/Sep/2013:11:01:00 +0200] "POST /form/bla.php HTTP/1.1" 200 568 "http://localhost/form/bla.php" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:23.0) Gecko/20100101 Firefox/23.0"


Si tu veux un log, autant le faire à la soumission du formulaire :

<?php
if(isset($_POST) && isset($_FILES)){
    $path = 'chemin-vers-le-fichier-log/';
    $logFile = 'log-soumission-form.txt';
    $mode = 'a+';
    $now = date('d m Y H:m'); //à vérifier
    $br = '\n';
    
    $f = fopen($path.$logFile,$mode);
    
    //move_uploaded_file + is_uploaded_file ???
    $row = $now.' : '.$_POST['un_champ'].$br.$now.' : '.$_FILES['champ_file']['name'].$br;
    fwrite($f,$row);
    
    fclose($f);   
}


* Code fait de tête. Je peux m'être trompé
niuxe a écrit :
Si c'est un seul client qui remonte ce souci, il ne s'est pas utilisé ton application ou qu'il fait semblant de ne pas savoir utiliser l'application.

...

Si tu veux un log, autant le faire à la soumission du formulaire


Non ce n'est pas un client mais un salarié ; c'est justement pour un doute sur la mauvaise volonté qu'on souhaite s'en assuré ; ou comprendre s'il y a bien une fuite au niveau serveur ou code.

Et oui, j'ai déjà mis en place un xml de suivi qui ajoute une ligne à chaque upload de documents Smiley smile mais je l'ai mis en place seulement après son retour négatif. Donc je dois attendre la prochaine fois ; c'est presque aberrant à dire à un utilisateur que l'on attend le prochain souci XD !

Enfin, on couvre au moins les futurs soucis Smiley smile !
Modérateur
Bonsoir,

Désolé si je réponds tardivement à ton sujet. Entre temps, je suis parti en congé et je n'ai plus pensé à ton souci. Cependant, j'ai repensé à ta problématique et je me suis dit qu'il y a une autre piste à explorer. Je pense que le Bash ou le Python ou le Perl devrait répondre à tes attentes.

bon dev
Modifié par niuxe (11 Oct 2013 - 22:38)
niuxe a écrit :
Bonsoir,

Désolé si je réponds tardivement à ton sujet. Entre temps, je suis parti en congé et je n'ai plus pensé à ton souci. Cependant, j'ai repensé à ta problématique et je me suis dit qu'il y a une autre piste à explorer. Je pense que le Bash ou le Python ou le Perl devrait répondre à tes attentes.

bon dev


Bonjour Niuxe,

Merci de ta réponse, tardive ou non, ta réponse est un peu vaste et je ne saisi pas très bien ce que je suis censé faire avec Smiley cligne .

Comme je le disait plus haut, je gère le suivi des futurs upload ; ce que je recherchais c'est un historique des uploads avant que j'ai mis en place un fichier de suivi.

Etant donné que cela remonte à un certains temps ; je doute que je retrouve des traces mais c'est toujours bon de savoir s'il existe un log de suivi des uploads sur les serveurs linux et où est ce qu'il se situe.

Merci encore.