Résolu μForum problème fopen()

  • Auteur de la discussion arbilus
  • Date de début

arbilus

Expert
Bonjours, j'ai un problème avec ce fameux forum (génial !: une page, tu la lance puis c'est bon) .

Bref, à chaque nouveau sujet du forum j'ai ce message d'erreur qui s'affiche:


"Warning: fopen() [function.fopen]: Filename cannot be empty in /home/arbilus/public_html/forums/1.php on line 22"


Cependant, le sujet est bien posté, mais l'erreur est toujours là. Alors j'ai regardé à la ligne 22 et j'ai ça:

[cpp]class SaveObj
{
function saveObj() {
if($fp=fopen($this->name,"w")) { // Ici c'est la ligne 22
fputs($fp, serialize($this));
fclose($fp);
}
}
}[/cpp]


Je comprend pas l'erreur, ils me disent que "le nom du fichier ne peut être vide" .. Quel fichier ?
Il y a le fichier de connexion, de membres et des messages puis l'index du forum. Alors je comprend pas ce que veux faire cette fonction.

J'ai pensé qu'elle n'était pas nécessaire pour le forum, je l'ai donc supprimé, mais là, grand message d'erreur: "fatal error" . Donc je sais pas que modifier pour enlever le message en amont. J'y comprend rien.

Pourriez-vous m'expliquer (à quoi sert ce code, comment enlever le message d'erreur, bref, c'est le brouillard) .

Par contre, pour le reste du code.. Il est TRES long, donc je sais pas si je dois le poster. Car c'est vraiment très lourd.
 

Chris022

Habitué
Salut arbilus,
Ta classe ne comporte pas de variable "name" ?
 

Storos

Modérateur cochon
Staff
Ou alors elle n'est pas renseignée...

De toute évidence, il ne trouve rien dans "$this->name" et ne peut donc pas ouvrir le fichier... :spamafote:

EDIT: ta fonction semble sauvegarder le contenu de l'objet courant dans un fichier.

EDIT2: Si ta fonction est appelée (et elle l'est sûrement) quelque part dans ton code, ce n'est pas étonnant que te fasse insulter quand tu essaies de la supprimer... :D
 

Chris022

Habitué

C'est ce qui me semblait aussi :/
 

Storos

Modérateur cochon
Staff
Sans plus de détails, on ira pas beaucoup plus loin... :D
 

arbilus

Expert
error_reporting(0);


-> Problème réglé :) . J'ai rien compris, mais problème réglé à la barbare !
 

Storos

Modérateur cochon
Staff
Euh... Le problème n'est pas réglé, tu te contentes de ne pas afficher le message d'erreur... :sweat:
 

arbilus

Expert
Oui, je sais bien, mais de toute façon le warning n'altère pas le fonctionnement du script.. Donc pourquoi pas le cacher ?
 

zeb

Modérateur
Salut,

Si tu viens ici avec ton code, attends-toi à ce qu'on le critique (objectivement).
Et on ne te lâchera pas tant que tu coderas comme un porc (sans chercher à vexer Storos :D ). Si, si. Et même que tu feras des progrès, grâce à toutes ses bonnes volontés.

D'ailleurs, ne vexe pas ces bonnes volontés en voulant faire du code crade qui marche.

;)
 

Storos

Modérateur cochon
Staff

Gruik! [:storos:6]
 

arbilus

Expert
Ok . Je veux bien trouver la solution. Donc "name" c'est le nom du fichier à éditer ou alors un "element" du code ? (ou alors autre chose ..)

edit: ^^

Sinon, j'ai pigé pourquoi il faut pas le faire: ça efface aussi les messages d'erreur plus important. Mais de toute façon j'ai un fichier texte qui m'affiche dans le dossier du script tous les messages d'erreur . Donc je peux très bien les masquer, et en cas de gros problème je consulte .

Ou alors.. Il est possible de faire le meme code, mais que pour les warning..
 

Storos

Modérateur cochon
Staff
"name" est un attribut (une variable quoi...) de l'objet en cours lors de l'appel à la fonction SaveObj.

Cherche dans ton code où cette "variable" est initialisée (et/ou reçoit une valeur). Si elle ne l'est pas... et bien c'est là qu'est ton problème... :p

Cherche également dans ton code à quoi va servir ce fichier. Cette fonction n'est vraisemblablement pas là pour faire joli... :/
 

arbilus

Expert
Oui, elle ne l'ai pas ..

Autrement, mon autre solution (celle de masquer) dans le cas où j'ai un fichier qui enumère toutes les erreurs des script du dossier au quel il appartient. ça peut le faire non ? (même si c'est un travail pas très propre) .

Mes fichiers texte sont des fichiers "error_log" . Ils présentent les erreurs comme ça:

[26-Jun-2010 06:09:49] PHP Parse error: syntax error, unexpected '<' in /home/xxxxx/public_html/load.php on line 162

[26-Jun-2010 06:09:50] PHP Parse error: syntax error, unexpected '<' in /home/xxxxx/public_html/load.php on line 162
 

Storos

Modérateur cochon
Staff
Sauf que ce n'est pas une solution... :spamafote:

Ce fameux fichier qu'il n'arrive pas à créer sert sûrement à quelque chose... :/

Cacher le warning revient à refuser d'aller dans sa cave au cas où on y verrait une fuite d'eau. Ce n'est pas parce que la porte est fermée que la fuite a disparue...
 

arbilus

Expert
Ben là, en locurence, si j'ai bien compris il faudrais renseigner "name" . ?
 

Storos

Modérateur cochon
Staff
ben oui, puisqu'il se plaint qu'il n'y a rien dedans... :spamafote:

Cherche dans ton code l'endroit où cela doit être fait.
 

arbilus

Expert
J'ai "var $name="membres/members.dat"; " .

C'est peut être ça ?

Edit: au fait, imaginons ce cas là: je vais vérifier si le forum fonctionne bien tout le temps, si c'est le cas, je vois pas pourquoi je pourrais ne pas "cacher l'erreur", car le forum je le changerais plus par le suite. Il restera le même. Donc pourquoi m'embeter à apprendre cette partie "complexe" du php (car j'ai appris que c'était complexe :D : les variables ou un truc du genre) alors que je peux trouver une "façon" de faire fonctionner mon forum sans problème et facilement .
Et dans le cas où je change quelque chose et qu'il y ai un problème, je consulte le fichier, je regarde d'où vient le problème et j'essai de le résoudre. Rien de plus simple.
 

Storos

Modérateur cochon
Staff
Ça y ressemble étonnamment... :D

réponse à l'EDIT: [:storos:3]

Le fichier en question semble être lié aux utilisateurs de ton forum... Il pourrait sans doute être utile de savoir à quoi il sert et de le faire fonctionner correctement... :sarcastic:
 

arbilus

Expert
Ben alors, pourquoi ça me met "warning" si "name" est renseigné . Je comprend pas . A moins que ça ne soit pas "var $name="membres/members.dat"; ..
 

Storos

Modérateur cochon
Staff
Meilleure réponse

Ça dépend où est la ligne de code, où est l'appel à ta fonction, bref de tas de choses que l'on ne peut pas voir si l'on est pas devant le code...

C'est à toi de vérifier ça... :/
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 135
Messages
6 718 107
Membres
1 586 397
Dernier membre
Chachabidou
Partager cette page
Haut