Problème avec la fonction fopen()

Fermé
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 - 9 juin 2009 à 17:41
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 - 12 juin 2009 à 19:30
Bonjour,
J'ai un problème avec la fonction fopen().
Voici ce que je fais :
<?php
$login = $_SESSION['log'];
$nom = $_SESSION['nom'];
$prenom = $_SESSION['prenom'];

$destinationficher = "C:/Documents and Settings/cocha0081/Mes documents/test/essais.html";

$fp = fopen($destinationfichier, 'xb');
$handle = @fopen ( $destinationfichier, 'w' );

$contenu = "<html>
                   <head>
                   <title>Fiche perso de machin</title>
                   </head>
                   <body>
                   <b>Pseudo :</b> ".$pseudo."
                   
                  </body>
                  </html>";

if ( is_writable ( $destinationfichier ) and $handle != FALSE ) {
fwrite ( $handle, $contenu );
fclose ( $handle );
}
else {
echo 'Fichier non disponible en écriture';
}
?>

Mais immanquablement, ça me sort une erreur (fichier non disponible en écriture). Où me suis-je trompé ?

Par avance merci !

34 réponses

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
10 juin 2009 à 13:02
J'ai testé ton code et il ne fonctionnait pas. J'ai donc quasiment refait le code.
<?php
$login = $_SESSION['log'];
$nom = $_SESSION['nom'];
$prenom = $_SESSION['prenom'];

$contenu = "<html>
	<head>
		<title>Fiche perso de machin</title>
	</head>
	<body>
		<b>Prénom :</b> ".$prenom."
	</body>
</html>";

$fp = @fopen("essais.html","a+");

$resultat = @fwrite($fp,$contenu);

if($resultat == true) {
	echo 'Fiche perso de machin écrite';
}
else {
	echo 'Fichier non disponible en écriture';
}
@fclose($fp);
?>
1
imencity Messages postés 214 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 29 août 2014 43
9 juin 2009 à 17:46
Hum... :
$fp = fopen($destinationfichier, 'xb');

le 'xb' c'est quoi ? C'est pas 'wb' plutôt ?

Tu peux voir la fonction ici:
http://www.punchost.com/php/function.fopen.php
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
9 juin 2009 à 17:50
Non, ça ne changer rien, j'ai toujours l'erreur... Mais je pense avoir fait tout ce qu'il fallait, je ne vois pas où ça cloche (mais je sens que c'est stupide).

En tout cas merci !
0
imencity Messages postés 214 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 29 août 2014 43
9 juin 2009 à 17:54
Ah oui... bon sang !

Tu es en serveur local sur ta bécane j'imagine ?
Le chemin de ton fichier est C:/....
C'est impossible !
Tu dois mettre ton fichier dans le répertoire "www" de ton serveur local, et mettre le lien ou en relatif "pages/monfichier.html", ou alors en absolu "http://localhost/pages/monfichier.html"

Dans tous les cas tu oublies les espaces dans les urls, alors renomme tes répertoires et fichiers !
Tiens-nous au courant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
9 juin 2009 à 17:56
Je ne suis pas sûr d'avoir bien compris. Je dois mettre l'adresse de mon serveur ftp pour dossier de destination ?

Merci !!
0
imencity Messages postés 214 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 29 août 2014 43
9 juin 2009 à 17:59
Tu es en localhost ?
Tes fichiers sont sur ton ordinateur ET tu as installé wamp serveur, esayphp ou autre...
ou bien tu es sur internet ?

Ma réponse sera différente suivant la tienne
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
9 juin 2009 à 18:03
Mes fichiers sont sur mon ordinateur et je les upload sur le serveur ftp de mon hébergeur, ma session est dans le réseau de ma fac, mais c'est juste pour tester car les fichiers qui seront par la suite uploadés seront sur mon ordi perso. J'espère avoir répondu !
0
imencity Messages postés 214 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 29 août 2014 43
9 juin 2009 à 18:08
Y a pas de session dans ce qui nous occupe...
Le tout est que tu me dises si tu tests tes fichiers en local ou sur le serveur.

Si c'est en local ton fichier doit être dans le répertoire "www", et si c'est sur un hébergement alors tu chemins doit être "https://www.hugedomains.com/domain_profile.cfm?d=tondomaine&e=com"
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
9 juin 2009 à 18:12
Ah pardon, je test mes fichiers sur le serveur. Je vais voir ce que ça donne !
Merci

Edit : j'ai mis l'adresse du site/essai.html, mais ça ne marche pas... Pourquoi ?
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
9 juin 2009 à 23:25
Décidément, j'ai beau modifier la destination, tout ce que je veux, rien n'y fait. Qu'est ce que j'ai manqué ?
Merci !
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
9 juin 2009 à 23:30
Salut

Es-tu sûr d'avoir mis les droits en écriture (CHMOD 666) sur le fichier cible ou sur le répertoire si le fichier n'existe pas ?
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
9 juin 2009 à 23:33
Donc, pour être sur, j'ai ajouté
$destinationficher = "http://touscelebres.olympe-network.com/essais.html";
chmod($destinationfichier,0666);
$fp = fopen($destinationfichier, 'wb');

Mais j'ai une erreur

Warning: chmod() [function.chmod]: No such file or directory in /www/touscelebres/test.php on line 7

Donc je pense que le prob se situe à la création du fichier, non ?
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
9 juin 2009 à 23:37
Non ! Le droits en écritures doivent être mis via le FTP et pas en PHP. Et après, en PHP, tu ouvres ton fichier de façon à pouvoir écrire dessus.
Et je te conseil d'utiliser une Url relative pour le chemin du fichier :
$destinationficher = "/essais.html";
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
9 juin 2009 à 23:42
Je vais poser une question peut être stupide : comment mettre les droits via le ftp ? Merci !
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
9 juin 2009 à 23:44
Tout dépend du logiciel. Avec FileZilla : Clic droit → Attributs du fichier
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
9 juin 2009 à 23:50
Je vais peut être encore poser une question stupide, mais je fais ce chmod sur quel fichier ? sur mon test.php ? (le fichier sur lequel je m'échine depuis tout à l'heure) ?
Merci !!
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
10 juin 2009 à 00:07
Normalement, c'est sur le fichier essais.html mais si il n'existe pas et que tu souhaite que PHP le crée, il faut mettre les droits sur le dossier qui contiendra la fichier. Je pense que sur Olympe-Network tu ne puisses pas modifier le CHMOD (c'est par défaut à 777 ou 666). Jete un coup d'œil ici
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
10 juin 2009 à 00:11
Bon, voila ce que je viens de faire : j'ai créé un repertoire "pages_users" dans le répetoire du site distant dans fileZilla, et j'ai mis les droits à 666. J'ai changé le chemindestination en "/pages_users/essais.html", mais là, ça ne marche pas quand même. Qu'est ce que j'ai encore fait de travers ? Merci de votre patience.
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
10 juin 2009 à 00:13
As-tu lu le tuto ?
Là j'y vais donc je ne te répondrai pas avant 6h
0
Derbie88 Messages postés 118 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 5 juillet 2010 2
10 juin 2009 à 00:18
Bon, j'ai lu le tuto, j'ai juste changé le "w" en "a" (
$fp = fopen($destinationfichier, 'ab');
), mais ça ne marche toujours pas. Merci en tout cas d'avoir pris du temps pour m'aider !
0