Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/06/2007, 14h41   #1
Invité régulier
 
Inscription : avril 2005
Messages : 37
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 37
Points : 7
Points : 7
Par défaut [Upload] Certains fichiers n'apparaissent pas

Bonjour,

Lorsque je "scanne" un répertoire à la recherche de l'ensemble des fichiers présents, certains fichiers ne sont pas reconnu comme tel par la fonction is_file(). Les fichiers .php sont reconnus comme étant des fichiers, par contre les fichiers .exe ne le sont pas. Le répertoire scanné est sous Windows "C:\Program Files\EasyPHP1-8\www\marketing\uploaded_files\".

Je ne comprends pas pourquoi ?
Cela provient-il des droits des fichiers ? Y'a-t-il une limitation sur les extensions ? Y'a-t-il d'autres causes possibles ?

D'avance merci de votre aide.

Alex.
allex2108 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 15h22   #2
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Heuuuu je ne suis pas sur qu'un .exe soit un File...

Tout comme un .zip, d'ailleur.... Ou tout autre chose qui n'est pas un "fichier texte"...

Voilà ce que dit la doc :

Citation:
is_file — Indique si le fichier est un véritable fichier
...Donc je pense que c'est normale qu'il ne le voit pas avec cette fonction
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 16h52   #3
Invité régulier
 
Inscription : avril 2005
Messages : 37
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 37
Points : 7
Points : 7
Merci pour la réponse, cela voudrait dire que je ne peux pas faire de manipulation sur des fichiers autres que des fichiers textes ??? Si je permets l'upload d'un fichier Excel par exemple, lorsque j'affiche la liste des fichiers du répertoire, je ne verrai pas mon fichier Excel. (car le problème se pose aussi avec les fichiers Excel...)
Dans ce cas, quelle fonction dois-je utiliser pour différencier mes sous-dossier de mes fichiers ?
Merci.
allex2108 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 16h57   #4
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Et bien si, un fichier Excell comme un .doc, d'ailleurs, sont considiérés comme des fichiers....

Il faut que tu fasses la différence entre une application (.EXE : code compilé) et un fichier, qui est généralement la résultante d'"un traitement par application :

Une image est un fichier, ainsi que du Excell, du Word, du Open Office, etc....

PS : un fichier Excell est en .XLS, et pas en .EXE !!!!

PPS : pour déterminer le type réelle d'un fichier, il faudrait que tu vérifie les MIME type de ceux ci
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 17h30   #5
Invité régulier
 
Inscription : avril 2005
Messages : 37
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 37
Points : 7
Points : 7
Désolé mais je me suis mal exprimé toute à l'heure. Je voulais ajouter suite à ta remarque qu'en plus des fichiers .exe, mes fichiers .xls ne sont pas plus reconnu. (alors même que comme tu l'indiques, il le devrait puisque considéré comme des fichiers 'textes'). Le problème se pose avec beaucoup d'autres types de fichiers, et même des fichiers textes (.txt) !!!

La fonction is_file ne considère pas ces fichiers Excel ou Textes comme étant des fichiers... Ou alors le problème vient d'ailleurs.

J'avais pensé à un problème de droits, vu que je déplaçais les fichiers via l'explorateur dans un premier temps afin de tester la boucle qui permettait de faire l'affichage. Mais le problème se présente également si je fais un upload par le "code" (avec la fonction move_uploaded_file).

Le répertoire contient des fichiers .php, .inc, .txt, .exe, .xls et lorsque j'affiche le contenu, seuls certains des fichiers .php "sortent".

Voici la fonction qui permet de "scanner" le répertoire.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
//creation d'un tableau contenant l'ensemble des fichiers
if (is_dir($chemin_rep))
{
	//ouverture du repertoire
	if ($rep = opendir($chemin_rep)) 
	{
		//lecture des fichiers du repertoire
		while (($file = readdir($rep)))
		{
			//constitution d'une ligne d'un tableau contenant les elements du fichier
			if (is_file($file)) $tab_fic[] = array($file, filemtime($file), filesize($file));
		}
	}
	//fermeture du repertoire et tri du tableau par date
	closedir($rep);
	$resultat = $tab_fic;
}

Cette fonction me constitue un tableau avec l'ensemble des fichiers du répertoire, ainsi que les attributs choisis.

Ensuite j'affiche le tout dans une table en faisant une boucle sur les élements de ce tableau
(pour info, f_affiche_un fichier ecrit une ligne <tr><td>....</tr></td>)

Code :
1
2
3
4
5
6
7
8
9
 
$tab_fic = f_ret_tab_liste_fichier($chemin_rep); //la fonction = code ci-dessus
if (is_array($tab_fic)) 
{
	foreach($tab_fic as $element) 
	{
		f_affiche_un_fichier($element, $fl_access);
	}
}
Y'a-t-il un problème (autre qu'un problème d'extension) lors du scan ?

Merci.
allex2108 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 17h37   #6
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Essaye ca pour voir :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
//creation d'un tableau contenant l'ensemble des fichiers
if (is_dir($chemin_rep))
{
	//ouverture du repertoire
	if ($rep = opendir($chemin_rep)) 
	{
		//lecture des fichiers du repertoire
		while (($file = readdir($rep)))
		{
			//constitution d'une ligne d'un tableau contenant les elements du fichier
			if (is_file($file)) {
                                 print_r($file);
                          }
		}
	}
	//fermeture du repertoire et tri du tableau par date
	closedir($rep);
}
Déjà, si je peux te conseiller de bien former tes if avec des accolades et une indentation, cela te sera plus lisible, et limitera les erreurs...

Essaye ca, puis sans la condition pour voir (sans le is_file)

Dis moi ce que ca fait
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 18h09   #7
Invité régulier
 
Inscription : avril 2005
Messages : 37
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 37
Points : 7
Points : 7
Je t'ai mis en pièces jointes des copies d'écrans du contenu du dossier, du résultat affiché avec le is_file et le resultat sans le is_file (2 copies d'écran)
Merci.
Images attachées
Type de fichier : jpg contenu_dossier.JPG (94,3 Ko, 3 affichages)
Type de fichier : jpg resultat_1.JPG (59,7 Ko, 2 affichages)
Type de fichier : jpg resultat_2_1.JPG (128,3 Ko, 2 affichages)
Type de fichier : jpg resultat_2_2.JPG (80,0 Ko, 2 affichages)
allex2108 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 18h25   #8
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
Hum....

C'est bizarre, effectivement sans le is_file tu as ce que tu veux, mais sans les stats de documents.....

Peut-être un PB lorsque tu as bougé les fichiers lors de l'Upload ?

Parce que is_file est quand même sensé marché, et en plus là il arrive pas à lire les stats de fichier....

Regarde ca, si tu ne l'a déjà fait :

http://fr.php.net/manual/fr/features.file-upload.php
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 09h41   #9
Invité régulier
 
Inscription : avril 2005
Messages : 37
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 37
Points : 7
Points : 7
Ca y est, j'ai trouvé la cause du problème .... en parcourant les différents post du lien que tu m'as donné, j'ai fini par ne plus que rechercher la cause de l'erreur provoquée lors de la recherche des stats...et là je me suis rendu compte que je ne donné pas le chemin complet du fichier, mais juste le nom du fichier...J'ai modifié, et mis le chemin complet (localisation + nom du fichier) et là cela fonctionne parfaitement...

J'ai également compris pourquoi cela marchait tout de même pour certain fichier... En fait, ces fichiers là étaient présent dans le répertoire d'exécution de ma page (en fait j'avais testé l'upload sur certain fichiers .php de mon site....)...

Merci pour votre aide.

A+
allex2108 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 09h54   #10
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
De rien, c'est cool que le PB soit résolu en plus par toi-même : c'est très formateur.

N'oublie pas la doc donc, qui comme tu l'as vu est très complète,

Et merci pour l'info, ca permettra à d'autre de ne pas se planter

Bonne chance pour la suite
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h56.


 
 
 
 
Partenaires

Hébergement Web