Je développe des plugins WordPress. Lorsque j'active mon plugin, je reçois le message suivant:
Le plugin a généré 293 caractères de sortie inattendue lors de l'activation. Si vous remarquez des messages «en-têtes déjà envoyés», des problèmes avec les flux de syndication ou d'autres problèmes, essayez de désactiver ou de supprimer ce plugin.
Le plugin fonctionne très bien mais je ne sais pas pourquoi je reçois ce message. Mon plugin est: http://wordpress.org/extend/plugins/facebook-send-like-button/
activate_plugin method
enwordpress/wp-admin/includes/plugin.php
. Le contenu de la variable $ output vous montrera les données chargées dans l'exception invariablement levées, puis obscurcies par wordpress.Réponses:
Je suppose que vous obtenez une erreur PHP, qui génère une sortie avant l'envoi des en-têtes. Si vous l'avez
E_NOTICE
activé, l'appel$_POST['foo']
peut générer une erreur "Remarque: variable non définie" si cette variable n'est pas définie.Meilleure pratique: ne supposez jamais rien sur les variables GET, POST, COOKIE et REQUEST. Vérifiez toujours d'abord en utilisant
isset()
ouempty()
.la source
Cela est généralement causé par des espaces ou de nouvelles lignes avant la
<?php
balise d' ouverture ou après la?>
balise de fermeture .Consultez cette page pour voir quelques solutions: Comment résoudre le problème d'avertissement des en-têtes déjà envoyés?
MISE À JOUR
Après avoir examiné le code de votre plugin, la seule chose que j'ai remarquée est que vous n'avez pas de balise PHP de fermeture. Sur la dernière ligne, ajoutez
?>
la source
?>
balise de fermeture . En fait, une façon de garantir que cela ne causera pas deHeaders already sent
problèmes est de laisser la balise de fermeture.?>
.Au début de votre fonction d'activation, mettez un
ob_start();
et à la fin mettez untrigger_error(ob_get_contents(),E_USER_ERROR);
Ensuite, essayez d'activer votre plugin, et vous pourrez alors voir ce que sont réellement les « 293 caractères générés d'une sortie inattendue ». À partir de là, le débogage sera plus facile (supprimez les nouveaux caractères de ligne ou résolvez certaines erreurs).
la source
J'ai déjà rencontré le même problème, pour moi, c'était un espace blanc supplémentaire. Après avoir supprimé tous ces espaces blancs, le plugin pourrait s'activer sans aucune erreur / avertissement.
la source
Je ne suis pas certain que c'est le problème, mais j'en suis presque sûr.
Vous devez utiliser un rappel valide comme deuxième argument dans
register_activation_hook()
:Pour autant que je sache, vous n'avez défini
twl_tablo_olustur()
nulle part. Cela expliquerait certainement la sortie inattendue (erreur PHP générée en essayant d'appeler une fonction inexistante), et expliquerait pourquoi cela fonctionne bien dans toutes les autres circonstances.la source
register_activation_hook(__FILE__,'twl_tablo_olustur');
ce code de l'ancienne version. Dans la nouvelle version (vous pouvez vérifier, v1.3), elle est mise à jour, mais toujours la même erreur.J'ai tendance à recevoir ces messages beaucoup lorsque je génère des messages de débogage de plugin / thème, en particulier lorsque je génère des éléments avant que wp_header ne soit appelé.
Si vous générez des caractères, je pense (peut-être que c'est faux ici) qu'il y a une déclaration d'en-tête implicite, donc lorsque l'appel normal de header () se produit, vous obtenez l'erreur car vous ne pouvez pas avoir 2 déclarations d'en-tête.
Vous pouvez utiliser ob_start () pour tamponner la sortie, ce qui devrait supprimer l'erreur - consultez les commentaires ici: http://php.net/manual/en/function.header.php
la source
Je sais que c'est une vieille question et qu'elle a une réponse acceptée. Il y a beaucoup de réponses qui couvrent ce que pourrait être le problème d'activation . Cependant, aucune des réponses n'aborde vraiment le problème central de COMMENT déboguer les problèmes d'activation du plugin.
Si vous allez développer des plugins WP, vous pouvez aussi utiliser les bons outils pour le travail. L'un d'eux est la barre de débogage . Il s'agit d'un plugin qui vous aide à déboguer les problèmes dans WP. Si vous êtes un développeur de plugins, il devrait être dans votre boîte à outils.
La barre de débogage a un certain nombre de modules complémentaires - des plugins pour le plugin, si vous voulez. L'une d'entre elles est l' activation du plugin de la barre de débogage , qui vous montrera l'erreur PHP générée lors de l'activation du plugin. Une fois que vous savez quelle est l'erreur PHP qui provoque l'envoi des en-têtes, vous savez où vous devez chercher pour la corriger. Croyez - moi, en sachant ce que l'erreur est peut vous faire économiser une tonne de temps au lieu d'essayer de comprendre ce que l'erreur pourrait être .
la source
En regardant la dernière révision du plugin (381724) le problème est Trop d'espaces
chaque fois que vous souhaitez créer cette structure:
dans votre code, utilisez TAB et non les espaces.
Voici votre code où j'ai remplacé tous les espaces par des tabulations et je ne reçois aucun message lors de l'activation:
la source
function blabla(){?> <input> <?php code... ?> output something <?php code.. }
alors ce n'est pas le cas.?>
vous obtiendrezheader already send error
car ces espaces blancs supplémentaires s'imprimeront lorsque le moteur php les analysera.Vous supprimez la balise de fermeture php (?>) À la fin de chaque fichier. et également supprimer tout l'espace vide après la balise de fermeture php (?>)
lorsque vous activez le plugin, vérifiez simplement si la table existe déjà ou non.
j'ai supprimé le problème par le code
la source
Mon problème était que le fichier était enregistré en tant que fichier UTF-8. L'enregistrer avec Codepage 1252 a résolu l'erreur.
la source