PHP. erreur de fichier: "Warning: fopen(./mes

Résolu/Fermé
midiweb - 29 janv. 2006 à 19:05
 midiweb - 29 janv. 2006 à 21:29
salut, je suis un néophyte en PHP mais j'ai fait un programme de formulaire qui sauve les données dans un fichier sur le disque du serveur. En local sur mon pc, tout marche impeccablement sans erreur tandis que sur le serveur j'ai plusieurs messages d'erreurs que je peux pas comprendre. Je ne vois pas d'où vient l'erreur d'autant que mon programme "Zend Studio PHP" ne les indique pas. Voici les messages suvi de mon script:


Warning: fopen(./messages.txt): failed to open stream: Permission denied in /var/www/web90/html/message.php on line 51

Warning: fread(): supplied argument is not a valid stream resource in /var/www/web90/html/message.php on line 54

Warning: rewind(): supplied argument is not a valid stream resource in /var/www/web90/html/message.php on line 63

Warning: fputs(): supplied argument is not a valid stream resource in /var/www/web90/html/message.php on line 66

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/web90/html/message.php on line 69


<?php

// Mettons le (future) fichier dans une variable
$fichier="./messages.txt";

// assignons nos 2 variables du formulaire et on en profite pour les protégers des balises HTML
$pseudo=htmlentities($_POST['pseudo']);
$prenom=htmlentities($_POST['prenom']);
$titre=htmlentities($_POST['titre']);
$mail=htmlentities($_POST['mail']);
$message=htmlentities($_POST['message']);
$mail_valide=ereg("([A-Za-z0-9]|-|_|\.)*@([A-Za-z0-9]|-|_|\.)*\.([A-Za-z0-9]|-|_|\.)*",$mail);
// Pensons au retour à la ligne et au stripslashes pour la variable $message
$message=stripslashes(nl2br($message));

// On met en place quelques conditions pour les cellules (nom et message)
// On vérifie avant tout si le fichier existe si ce n'est pas le cas on le crée

if(!is_file($fichier))
{
$verif=fopen($fichier,"w+");
}

// On vérifie que le login ou le message ne soient pas vide
elseif (trim($message)=="" || trim($pseudo)=="" || trim($prenom)=="" || trim($mail)=="" || trim($titre)=="" || !$mail_valide)
{
//si les champs sont vides ou incorrects, on réaffiche le formulaire
include('./livredor.php');
// On sort du script !
exit;
}

// Après ces quelques vérification d'usage on passe à l'exécution de ce formulaire


// Si ok on ouvre en écriture-enregistrement du fichier message.txt
$verif=fopen($fichier,"r+");

// On analyse les anciennes données et on les stocks
$stock=fread($verif,filesize($fichier));

// On met la date dans une varialbe
$date=date ("d/m/Y");

// On paramètre le tout dans la variable $opinion
$opinion="<b>".$prenom."</b>"." "."<b>".$pseudo."</b> a écrit le : ".$date.".$mail<br />\n".$message."<br />\n<hr />";

// On remet le curseur du fichier en début de ligne
rewind($verif);

// On insère le nouveau commentaire
fputs($verif,$opinion." \n".$stock);

// On clore le fichier
fclose($verif);

// On affiche le tout
readfile($fichier);
header("location:consultezlo.php");

?>


merci de m'aider. A+
A voir également:

2 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
29 janv. 2006 à 20:47
Salut,
A priori le premier message indique que tu n'as pas les droits pour ouvrir
le fichier en écriture.
Certains hébergeurs ont ce défaut, le compte utilisateur qui fait tourner le service
du serveur WEB n'est pas celui qui est utilisé pour FTP.
Tu peux toujours essayer de créer le fichier changer les droits (écriture publique)
sur le fichier messages via FTP.
Attention ça ouvre une brèche de sécurité, car d'autres scripts pourrait
modifier ce fichier (autres que les tiens).
Sinon il faut passer par une base de données.
A+, crabs
1
merci. Par ftp j'ai mis tous les droits en écriture. J'ai moins de messages d'erreurs. Je n'ai plus que celui-ci:
Fatal error: Call to undefined function: f() in /var/www/web90/html/message.php on line 54

As-tu une idée de ce qu'il fat faire? Je n'ai pas droit à une base de données avec mon contrat

a+.
0