Comment peut-on parcourir un fichier?

rohfrh Messages postés 15 Statut Membre -  
taktouk2010 Messages postés 9 Statut Membre -
Salut, mon probléme c'est que pour le moment je voudrais ouvrir un fichier texte ou xml et le consulter et puis je vais essayer d'extraire les données que j'en ai besoin en PHP.

Mais j'ai toujours le même erreur, je voudrais savoir comment je pourrais consulter mes fichiers textes par exemple qui se trouvent dans:
C:\Programmes Files\EasyPHP5.3.0\Report.txt.
et s'il y a un autre moyen priére de m'aider.
voici le code:

<?php
$file = include(".;/Programmes Files/EasyPHP5.3.0/Report.txt");
print "The include file returned $file";
?>
et voici le message du navigateur:

Warning: include(.;/Programmes Files/EasyPHP5.3.0/Report.txt) [function.include]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP5.3.0\www\sources\include.php on line 11

Warning: include() [function.include]: Failed opening '.;/Programmes Files/EasyPHP5.3.0/Report.txt' for inclusion (include_path='.;C:\php5\pear') in C:\Program Files\EasyPHP5.3.0\www\sources\include.php on line 11
The include file returned

voici un autre:
<?php
$fp=fopen("Report.txt",'r',C:\Programmes Files\EasyPHP5.3.0\Report.txt) or die ("Impossible d'ouvrir le message");
?>

le message du navigateur:
Parse error: parse error in C:\Program Files\EasyPHP5.3.0\www\sources\include.php on line 11

A plus...
A voir également:

4 réponses

taktouk2010 Messages postés 9 Statut Membre
 
En generale ce n'est pas possible d'acceder au fichiers locaux à partir d'un serveur distant ... c'est très delicat . donc essayez de tester cela avec les fichier se trouvant sur la racine du serveur et pas celle de disque locale ...
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
0
Groarh Messages postés 706 Statut Membre 185
 
Salut rohfrh,
va falloir réviser les include() ;)
http://www.manuelphp.com/php/function.include.php

Il faut bien comprendre ce qui se passe lors d'une inclusion. Imagine que tout le contenu du fichier inclus remplace la simple ligne include(...); du script appelant.
En réalité, le contenu du fichier est analysé en entier, et traité comme un fichier php normal : s'il y a des balises <?php ... ?>, le code php est analysé, sinon c'est affiché directement.
La valeur de retour est 1 par défaut, et c'est ce que tu obtiendrais dans ta variable $file s'il n'y avait pas d'autre erreur (au passage, je pense que tu as confondu le chemin de ton fichier et l'include_path).

Voici un exemple qui devrait clarifier les choses :

====== fichier : include1.php ======
<?php
return 42;
?>


====== fichier : include2.txt ======
<h1>Bonjour</h1>


======= fichier : test.php =========
<?php
$retour1 = include('include1.php');
// rien ne s'affiche

$retour2 = include('include2.txt');
// affiche '<h1>Bonjour</h1>'

var_dump($retour1);
// affiche 'int(42)'

var_dump($retour2);
// affiche 'int(1)'
?>

Si tu cherches à afficher simplement le contenu du fichier, je te conseille readfile() : http://www.manuelphp.com/php/function.readfile.php

Autrement, la solution fopen() est la meilleure. Tu as juste un petit problème de syntaxe :

<?php
$fp = fopen('C:\Programmes Files\EasyPHP5.3.0\Report.txt','r')
	or die ("Impossible d'ouvrir le message");
?>

L'erreur que tu avais est dûe à l'absence de guillemets autour de 'C:\Program Files\etc.', mais de toute façon, en général on appelle fopen() avec seulement deux paramètres.

Si tu as d'autres questions, n'hésite pas ;)
0
taktouk2010 Messages postés 9 Statut Membre
 
si vous voulez essayer avec un fichier sur le serveur (ça veut dire local par rapport au fichier php où se trouvant le code php qui lance l'opération ) on doit bien entendu evoquer la notion du shéma relatif d'un fichier ... donc un fichier php dans un serveur (virtuel ou réel) peut agir (generalement) sur les fichiers qui lui sont locaux (distants par rapport au disque locale de l'utilisateur/visiteur) alors il suffit d'utiliser les shemas relatifs pour lire/ecrire sur ces fichier .
exemple :
*Creez un fichier test.php et mettez le dans un repertoire x dans le serveur (si virtuel alors dans la racine www/machin ou htdocs/machin)
* verifiez que cette repertoir x ne soit pas protégée en ecriture/lecture
*mettez le code suivant dans test.php : <?php
$fp = fopen('hello.txt','w+')
or die ("Impossible d'ouvrir le message");
fputs ($fp,"Hello world");
fclose ($fp);
$fp2 = fopen ("hello.txt","r");
$txt = fgets ($fp2,filesize("hello.txt"));
echo $txt
?>
normalement ça doit marcher . la meme chose pour include .
faite un fichier : hello.txt mettez y ce que vous voulez et puis metter le dans la même repertoir qu'un fichier php test.php et mettez dans ce dernier <?php
include ("hello.txt");
?>
en gros hello.txt était toujours un fichier local relativement à test.php c'est pour cette raison qu'en la modifiant/lisant on ne risque pas le systeme locale de l'utilisateur/visiteur (enfaite c'est pour des raison de sécurité que le systeme d'exploitation et/ou le navigateur bloque tout accés possible par un script distant aux ressources locaux )
0