Ich entwickle WordPress-Plugins. Wenn ich mein Plugin aktiviere, erhalte ich die folgende Meldung:
Das Plugin hat während der Aktivierung 293 Zeichen unerwartete Ausgabe generiert. Wenn Sie bereits gesendete Header-Nachrichten, Probleme mit Syndication-Feeds oder andere Probleme bemerken, deaktivieren oder entfernen Sie dieses Plugin.
Das Plugin funktioniert sehr gut, aber ich weiß nicht, warum ich diese Nachricht erhalte. Mein Plugin ist: http://wordpress.org/extend/plugins/facebook-send-like-button/
activate_plugin method
inwordpress/wp-admin/includes/plugin.php
. Der Inhalt der Ausgabevariablen $ zeigt Ihnen die in die Exception geladenen Daten, die ausnahmslos geworfen und dann von WordPress verschleiert werden.Antworten:
Ich vermute, Sie erhalten einen PHP-Fehler, der die Ausgabe generiert, bevor die Header gesendet werden. Wenn Sie dies
E_NOTICE
aktiviert haben,$_POST['foo']
kann ein Aufruf den Fehler "Hinweis: undefinierte Variable" erzeugen, wenn diese Variable nicht gesetzt ist.Best Practice: Nehmen Sie niemals etwas über GET-, POST-, COOKIE- und REQUEST-Variablen an. Überprüfen Sie immer zuerst mit
isset()
oderempty()
.quelle
Dies wird normalerweise durch Leerzeichen oder neue Zeilen vor dem öffnenden
<?php
Tag oder nach dem schließenden?>
Tag verursacht.Auf dieser Seite finden Sie einige Lösungen: Wie löse ich das Problem mit bereits gesendeten Headern?
AKTUALISIEREN
Nach der Überprüfung Ihres Plugin-Codes ist mir aufgefallen, dass Sie kein schließendes PHP-Tag haben. Fügen Sie in der letzten Zeile hinzu
?>
quelle
?>
Tag. Ein Weg, um sicherzustellen, dass es keineHeaders already sent
Probleme verursacht , ist das Weglassen des schließenden Tags.?>
.Am Anfang Ihrer Aktivierungsfunktion setzen Sie ein
ob_start();
und am Ende eintrigger_error(ob_get_contents(),E_USER_ERROR);
Versuchen Sie dann, Ihr Plugin zu aktivieren, und Sie können sehen, was die " generierten 293 Zeichen unerwarteter Ausgabe " wirklich sind. Ab diesem Zeitpunkt ist das Debuggen einfacher (entweder entfernen Sie neue Zeilenzeichen oder beheben Sie einige Fehler).
quelle
Ich habe das gleiche Problem schon einmal gehabt, für mich war es ein zusätzlicher weißer Raum. Nachdem ich alle diese Leerzeichen entfernt hatte, konnte das Plugin ohne Fehler / Warnung aktiviert werden.
quelle
Ich bin mir nicht sicher, ob das das Problem ist, aber ich bin mir ziemlich sicher.
Sie müssen einen gültigen Rückruf als zweites Argument in verwenden
register_activation_hook()
:Soweit ich das beurteilen kann, haben Sie
twl_tablo_olustur()
nirgends definiert . Dies würde sicherlich die unerwartete Ausgabe erklären (PHP-Fehler beim Versuch, eine nicht vorhandene Funktion aufzurufen) und erklären, warum sie unter allen anderen Umständen einwandfrei funktioniert.quelle
register_activation_hook(__FILE__,'twl_tablo_olustur');
dieser Code aus alter Version. In der neuen Version (Sie können überprüfen, v1.3) ist es aktualisiert, aber immer noch der gleiche Fehler.Ich neige dazu, diese Meldungen häufig zu erhalten, wenn ich Plugin / Theme-Debug-Meldungen ausgebe, insbesondere, wenn ich Dinge ausgebe, bevor wp_header aufgerufen wird.
Wenn Sie irgendwelche Zeichen ausgeben, dann glaube ich (könnte hier falsch sein), dass es eine implizite Header-Deklaration gibt. Wenn also der normale Header () -Aufruf auftritt, erhalten Sie den Fehler, da Sie keine 2 Header-Deklarationen haben können.
Sie können ob_start () verwenden, um die Ausgabe zu puffern. Dies sollte den Fehler beheben. Beachten Sie die Kommentare hier: http://php.net/manual/en/function.header.php
quelle
Ich weiß, dass dies eine alte Frage ist und eine akzeptierte Antwort hat. Es gibt viele Antworten , die , was die Aktivierung Problem abdecken könnte möglicherweise sein. Bei der Kernausgabe von HOW zum Debuggen von Problemen mit der Plugin-Aktivierung wird jedoch keine der Antworten angezeigt.
Wenn Sie WP-Plugins entwickeln, können Sie auch die richtigen Tools für den Job verwenden. Eine davon ist die Debug-Leiste . Dies ist ein Plugin, mit dem Sie Probleme in WP beheben können. Wenn Sie ein Plugin-Entwickler sind, sollte es in Ihrer Toolbox sein.
Die Debug-Leiste enthält eine Reihe von Add-Ons - Plugins für das Plugin, wenn Sie so wollen. Eine davon ist die Aktivierung des Debug-Leisten- Plugins, die den PHP-Fehler anzeigt, der bei der Aktivierung des Plugins auftritt. Sobald Sie wissen, was der PHP-Fehler ist, durch den die Header gesendet werden, wissen Sie, wo Sie nachsehen müssen, um sie zu korrigieren. Vertrauen Sie mir, zu wissen, was der Fehler ist, kann Ihnen eine Menge Zeit sparen, anstatt herauszufinden, was der Fehler sein könnte .
quelle
Bei der letzten Überarbeitung des Plugins (381724) ist das Problem, dass zu viele Leerzeichen vorhanden sind
Jedes Mal, wenn Sie diese Struktur erstellen möchten:
Verwenden Sie in Ihrem Code TAB und keine Leerzeichen.
Hier ist Ihr Code, in dem ich alle Leerzeichen durch Tabulatoren ersetzt habe und bei der Aktivierung keine Nachrichten erhalte:
quelle
function blabla(){?> <input> <?php code... ?> output something <?php code.. }
dann ist das nicht der Fall.?>
,header already send error
werden diese zusätzlichen Leerzeichen ausgegeben, wenn die PHP-Engine sie analysiert.Sie entfernen das PHP-Schließtag (?>) Vom Ende jeder Datei. und entferne auch alle Leerzeichen nach dem Schließen des PHP-Tags (?>)
Wenn Sie das Plugin aktivieren, überprüfen Sie einfach, ob die Tabelle bereits existiert oder nicht.
Ich habe das Problem durch den Code entfernt
quelle
Mein Problem war, dass die Datei als UTF-8-Datei gespeichert wurde. Durch Speichern mit Codepage 1252 wurde der Fehler behoben.
quelle