- Statut : non résolu
- Ce sujet contient 7 réponses, 2 participants et a été mis à jour pour la dernière fois par luciole135, le il y a 13 années et 6 mois.
-
AuteurMessages
-
7 juillet 2011 à 11 h 39 min #497159
Bonjour,
Ma configuration WP actuelle
– Version de WordPress : 3.1.4
– Version de PHP/MySQL : 5.1
– Thème utilisé :
– Extensions en place : cimy counter, cookies for comments
– Nom de l’hebergeur : FREE
– Adresse du site : http://additifstabac.free.frProblème(s) rencontré(s) :
Voilà,
Depuis que j’ai écrit la dernière version de mon plugin, j’ai une erreur « cannot modify header » très étrange !
Tous les fichiers sont en UTF8 (sans BOM), mais l’erreur ne vient de là.En effet, cette erreur ne se produit que lorsque on veut enregistrer un article ou un commentaire sur le site lorsque mon extension est activée.
Sinon, tout fonctionne bien. Ce qui est étrange, c’est que la seule différence avec la version précédente est simplement la création d’un dossier « pages » dans lequel j’ai placé une dizaine de pages qui sont appelées par le programme principal.
Tout fonctionne bien, le plugin ne pose aucun problème lors de son usage mais il fait planter l’édition de WordPress !De plus je n’ai pas cette erreur en local, elle ne se produit que sur un site en ligne !
Quel est le problème, please help !voici l’erreur :
Warning: Cannot modify header information – headers already sent by (output started at /mnt/170/sdb/5/1/additifstabac/wp-content/plugins/*******/pages/*******.php:85) in /mnt/170/sdb/5/1/additifstabac/wp-includes/pluggable.php on line 8977 juillet 2011 à 13 h 31 min #780527C’est de plus en plus étrange, en attendant de trouver l’erreur, je recopie les fichiers situés dans le dossier « pages » pour les remettre comme ils étaient avant ce changement, c’est à dire toutes les fonctions du plugin dans un seul et même fichier (au lieu de les avoir dans plusieurs fichiers situé dans le dossier « page »).
Et maintenant, je ne peux même plus activer le plugin alors que j’ai bien modifié les adresses absolues dans le nouveau fichier.
J’ai tout remis comme avant, et alors qu’avant cela fonctionnait, maintenant, à l’activation du plugin, j’ai cette erreur « Fatal error: Cannot redeclare luc_add_pages() « ?
J’ai vérifié toutes les accolades, elles sont exactement au même endroit, toutes les focntions sont remises exactement comme avant et j’ai cette erreur.
Quelle galère le php !
7 juillet 2011 à 13 h 43 min #780528Bon, je suis vraiment à côté de mes pompes, j’ai deux plugins qui font la même chose et ont exactement les mêmes noms de focntions, j’ai simplement oublié de désactiver le premier pour activer le second.
Maintenant que j’ai remis toutes les fonctions dans un seul et même fichier, il n’y a plus aucun bug à l’édition des pages et articles du site web.
En attendant, je vais faire cette mise à jour.
Si quelqu’un pouvait au moins m’aiguiller, mais il y a quelque chose que j’ai du oublier lorsque j’ai séparé les fonctions du plugin qui créent chacune une page HTML à leur appel.
Pourquoi quand les focntions sont toutes ensembles, cela marche et quand je les sépare, l’édition ds articles et commentaires sur le site est impossible avec une belle erreur « cannot modify header » ?
Qu’est-ce que j’ai bien pu rater ?
L’extension fonctionne parfaitement, toutes les pages fonctionnent niquel-chrome, mais l’édition de WordPress est impossible !
Quelle galère le PHP !
7 juillet 2011 à 15 h 50 min #780529Pour être plus précis, quand on appelle l’éditeur de WordPress, il n’y a aucun problèmes, c’est lorsque l’on veut « mettre à jour » la page éditée, que cela est impossible.
Je cherche du côté de la fonction include puisque c’est la seule nouveauté, mais comme tout fonctionne normalement en local, il y a peut-être une erreur d’adresse.
Mais pourquoi une erreur d’adresse lors de l’édition et pas à l’appel des pages ?
C’est vraiment étrange !
J’ai regardé comment font d’autres plugins pour inclure des pages, ils utilisent require_once, j’ai changé toutes les fonction include par celle -là, mais le problème persiste.
la version avec les require_once a fait planter le serveur FREE :
« Erreur 500 – Erreur interne du serveur », le .htaccess est pourtant correct, bref, c’est la galère totale !Bon au bout de 3 minutes, après avoir viré le plugin via FTP, le site fonctionne à nouveau.
Au secours !HELP !
Y-a-t-il quelqu’un qui peut me secourir, je me noie dans le PHP sans rien trouver.
L’erreur ne peut venir que de la façon d’inclure les fichiers, ou du résultat que cela induit (ce que j’ignore complètement), puisque quand je ne fais plus de include ou require_once, tout baigne !
Pitié, au secours !
7 juillet 2011 à 16 h 43 min #780530Il est indiqué dans le message d’erreur « output started at /mnt/170/sdb/5/1/additifstabac/wp-content/plugins/*******/pages/*******.php:85« . Regardez la ligne 85 de ce fichier et assurez vous qu’il n’existe pas d’echo ni de spaces en dehors des valises php . Vous pouvez aussi coller cette partie du code si vous avez des doutes.
7 juillet 2011 à 17 h 06 min #780531Vous êtes mon sauveur !
merci, je n’aurai jamais imaginé qu’un simple espace après le ?> puisse faire de telles choses, c’est absolumment incroyable le pouvoir d’un caractère espace !
En effet, la ligne 85 était tout bêtement la fin du fichier, c’est pourquoi je ne comprenais pas d’où venait l’erreur puisque c’était la fin…
Ca fait planter un plugin et WordPress, d’ailleurs pourquoi un espace a-t-il cet effet ?
C’est juste parce que c’est un espace, ou c’est pour tous les caractères pareil ?Pourquoi un caractère après une balise ?> fait-il planter le site, parce qu’alors cela n’est pas reconnu par HTML ?
Merci de votre aide, une après-midi entière pour un espace, dingue, quelle galère ce PHP !
Le langage Pascal est beaucoup plus simple, on compile les programmes pour pouvoirs les utiliser, ici, non, c’est tout en direct…
Enfin, faire un plugin est quand même intéressant, on apprend beaucoup.
Merci encore !
🙂
7 juillet 2011 à 17 h 50 min #780532Ca fait planter un plugin et WordPress, d’ailleurs pourquoi un espace a-t-il cet effet ?
C’est juste parce que c’est un espace, ou c’est pour tous les caractères pareil ?C’est pareil pour tous les caractères. J’ai mentionné les espaces parce que c’est une erreur que l’on fait souvent. Cependant, cela dépend à quel moment ils apparaîssent.
Dans certains cas, les scripts php ont besoin d’envoyer des en-têtes http avec la fonction header (par exemple, pour faire des redirections ou envoyer des cookies). En simplifiant, une réponse http est constitué des en-têtes et le contenu. Les premières doivent toujours être envoyés en avant.
Maintenant, prenons comme exemple le code suivant
include « ton plugin.php »;
…
header(« Location: … »); // redirectionne la page vers un autre siteLorsqu’il y a des espaces (ou d’autres caractères comme le BOM d’un fichier utf-, cela implique que le serveur les envoie déjà comme le contennu de la réponse, alors que plus en bas l’on considère toujours que l’on peut envoyer des en-têtes. C’est déjà trop tard et c’est justement cela qui indique l’erreur « Cannot modify header information – headers already sent by …«
Je ne sais pas si vous avez compris ? ou je suis peut-être nul pour vous expliquer en francais ! ^^
7 juillet 2011 à 22 h 54 min #780533Oui, j’ai compris, vous expliquez très bien,
Merci pour tout.
🙂
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.