Php : fopen et erreur
Résolu
Bonjour,
Je souhaite afficher divers fichiers xml sur une même page web. Jusqeu là tout va bien... si ce n'est que je n'arrive pas à ouvrir mon fichier avec la fonction fopen...J'ai essayé d'ouvrir plusieurs fichiers, mais ça bloque...
J'ai même repris le code de base proposé sur le site :
Ben rien à faire, ça me renvoie toujours le même message d'erreur :
Est-ce que quelqu'un peut m'aider ? D'avance merci...
Je souhaite afficher divers fichiers xml sur une même page web. Jusqeu là tout va bien... si ce n'est que je n'arrive pas à ouvrir mon fichier avec la fonction fopen...J'ai essayé d'ouvrir plusieurs fichiers, mais ça bloque...
J'ai même repris le code de base proposé sur le site :
<?
$fp = fopen("http://www.commentcamarche.net","r"); //lecture du fichier
while (!feof($fp)) { //on parcourt toutes les lignes
$page .= fgets($fp, 4096); // lecture du contenu de la ligne
}
?>
Ben rien à faire, ça me renvoie toujours le même message d'erreur :
Warning: fopen(http://www.commentcamarche.net): failed to open stream: Bad file descriptor in c:\program files\easyphp1-8\www\test.php on line 3 Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\easyphp1-8\www\test.php on line 3
Est-ce que quelqu'un peut m'aider ? D'avance merci...
11 réponses
-
ModérateurChez moi cela fonctionne
johand@horus:~/src/php$ cat fopen.php <?php $page = ''; $fp = fopen("http://www.commentcamarche.net","r"); //lecture du fichier while (!feof($fp)) { //on parcourt toutes les lignes $page .= fgets($fp, 4096); // lecture du contenu de la ligne } print($page); ?> johand@horus:~/src/php$ php fopen.php | sed -e '/^ *$/d'|head <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META NAME="site" content="http://www.commentcamarche.net"> <META NAME="expires" content="never"> <META NAME="rating" content="general"> <META NAME="revisit-after" content="7 days"> <META NAME="ROBOTS" content="index,follow"> <META NAME="author" content="Jean-François Pillou"> <META NAME="subject" content="Comment ça marche? [L'informatique]">
Il est probable que cela vienne de la configuration php du serveur http
http://php.easynet.be/manual/fr/function.fopen.php
<cut>
Si PHP a décidé que filename spécifie un protocole enregistré, et que ce protocole est enregistré comme un protocole réseau, PHP s'assurera que la directive allow_url_fopen est activée. Si elle est inactive, PHP va émettre une alerte et l'ouverture va échouer.
</cut>
Contacte ton administrateur , ou trouve un hébergeur permettant l'ouverture distante.
Johan
-
D'apres le manuel PHP :
Si PHP a décidé que filename spécifie un protocole enregistré, et que ce protocole est enregistré comme un protocole réseau, PHP s'assurera que la directive allow_url_fopen est activée. Si elle est inactive, PHP va émettre une alerte et l'ouverture va échouer.
C'est une histoire de config php. Faut aller faire un petit tour dans '/etc'. -
Bonjour,
Le problème vient probablement du temps que met le script php à s'exécuter.
En réalité, vous rencontrez une erreur de timeout (durée d'exécution maximale d'un script) et non une erreur liée à la mauvaise utilisation de la fonction fopen.
La solution en local : éditer le fichier httpd.conf, rechercher "timeout" (sans les guillemets), puis augmenter la valeur numérique située à droite de "timeout" qui correspond au délai en secondes avant Time out.
Cordialement,
Logan. -
Je viens de tester la même chose avec un fichier en local et ça fonctionne. Est-ce que ça peut venir du serveur ?
-
attend c'est bizarr, t'as mis :
$fp = fopen("http://www.commentcamarche.net","r"); //lecture du fichier
et ca marche en local ? ! non de non je dis la..
en fait dans le premier argument de fopen, c'est le chemin de ton fichier..$file=fopen("./monfichier.txt","r");
voilà la ca devrait aller mieux :P
Zep3k!Gno-
-
@elacsapbin tu les récupères via ftp puis près tu travail dessus...
http://www.nexen.net/docs/php/annotee/function.ftp-get.php?lien=ftp
EnJoY
Zep3k!GnO
-
-
mais normalement fopen devrait fonctionner avec les fichiers distants, non ?
-
mais normalement fopen devrait fonctionner avec les fichiers distants, non ?
Oui effectivement : http://www.nexen.net/docs/php/annotee/function.fopen.php
Par contre je verrai bien avec ca :$fp = fopen("http://www.commentcamarche.net/monFichier_a_lire.txt","r"); //lecture du fichier
plutot que ton$fp = fopen("http://www.commentcamarche.net","r"); //lecture du fichier
bon Courage.
Zep3k!GnO -
saluuuuut ça va bien
-
salut coco
moi c <html>
<head>
<title>essai formulaire</title>
</head>
<body>
<? print("message : ".$_GET["msg"]."<br>\n");
print("nom : ".$_POST["nom"]."<br>\nage : ".$_POST["age"]."<br>\n"); ?>
<form action="exemple3.php?msg=bonjour" method="post">
nom : <input type="text" name="nom">
age : <input type="text" name="age">
<input type="submit" value="Valider">
</form>
</body>
</html> u -
ini_set ("max_execution_time","90");
cette ligne met le timeout à 90, le temps peut etre ralonger en fonction des besoins... Il suffi de la mettre en debut de page -
D'apres le manuel PHP :
Si PHP a décidé que filename spécifie un protocole enregistré, et que ce protocole est enregistré comme un protocole réseau, PHP s'assurera que la directive allow_url_fopen est activée. Si elle est inactive, PHP va émettre une alerte et l'ouverture va échouer.
C'est une histoire de config php. Faux allé faire un petit tour dans ton '/etc'.