Das Örtchen RSS-Feed
Suchen
Blog
Ähnliche Beiträge
Neueste Kommentare
Neueste Einträge
Populäre Einträge
Tagwolke
addon auswertung barcamp blog bug cms cms made simple datenkrake drupal feed film firefox frickeln friday gewinnspiel hardware how-to individualisierung meinung mmo modul nas php problem rss se7en server sicherheit sicherung software spiel teil theme trailer unterhaltung update windows windows 7 wordpress wow
Monatsarchiv

WordPress: Debugging-Probleme und wie man sie umgeht

Seit einiger Zeit nutze ich in meinen WordPress-Installationen das Plugin Attachment Page Comment Control und mit genau diesem hatte ich gestern ein Problem. Bei der Umsetzung eines neuen Theme-Features in meiner lokalen Entwicklungsumgebung erschien (bei der Nutzung der Mediathek) für wenige Augenblicke eine PHP-Meldung.  Doch wie kann man etwas debuggen, das man nicht wirklich lesen kann? Ich griff in meiner Not zu einem Screenshot, der aber erst im dritten Anlauf klappte.

Die Ausgangssituation

Folgende Zeilen habe ich bei mir immer in der wp-config.php eingetragen:

 define('WP_DEBUG', in_array(php_uname('n'), array('host-name')));
define('SCRIPT_DEBUG', in_array(php_uname('n'), array('host-name')));

Hinweis: Durch diesen Code wird das Debugging von WordPress immer dann aktiv, wenn es sich um meine lokale Entwicklungsumgebung handelt. Der String host-name muss natürlich die korrekte Angabe für Euren Rechner enthalten. Handelt es sich um mehrere Rechner, so packt einfach weitere Angaben ins Array.

Mit aktiviertem Debugging tauchen Meldungen immer in der derzeitigen Ausgabe von WordPress auf. Im Falle der Mediathek kann dies dann auch eine "Seite" sein, die nur sehr kurz auftaucht.

Die Umgehung meiner Debugging-Probleme

Ich muss Gevatter Zufall danken, der mich gestern Abend zu dem Blog-Beitrag Logging Errors In WordPress führte. Hier wird eine Lösung vorgestellt, mit welcher man anstatt sichtbarer Meldungen einfach alles in einem Fehlerlog speichert. Mit leichten Anpassungen sieht das dann bei mir wie folgt aus:

 define('WP_DEBUG', in_array(php_uname('n'), array('host-name')));

if (constant('WP_DEBUG')) {
    define('SCRIPT_DEBUG', true);
    define('WP_DEBUG_LOG', true);
    define('WP_DEBUG_DISPLAY', false);
    @ini_set('display_errors', 0);
} 

Hinweis: Sofern es sich um einen Windows-Rechner handelt, sollte hierdurch problemlos die Datei debug.log im Ordner wp-content erzeugt werden (bei Linux-basiertem Geraffel einfach manuell die Datei anlegen und mit passenden Rechten versehen). Sofern man den Kommentaren eines anderen Beitrags trauen darf, ist sogar eine Änderung der Datei bzw. des Ordners möglich.

Die Lösung

Die gesuchten Meldungen des Plugins tauchten dann auch wie gewünscht im debug.log auf:

PHP Notice:  Undefined index:  comment_status in (...)\wp-content\plugins\attachment-page-comment-control\AttachmentPageCommentControl.php on line 85

PHP Notice:  Undefined index:  ping_status in (...)\wp-content\plugins\attachment-page-comment-control\AttachmentPageCommentControl.php on line 92

Zur Unterdrückung dieser Hinweismeldungen reicht nachfolgende Codeänderung:

 function attachment_fields_to_save($post, $attachment) {
    if (
        isset($attachment['comment_status']) &&
        ($attachment['comment_status'] == 'open')
    ) {
        $post['comment_status'] = 'open';
    }
    else {
        $post['comment_status'] = 'closed';
    }
       
    if (
        isset($attachment['ping_status']) &&
        ($attachment['ping_status'] == 'open')
    ) {
        $post['ping_status'] = 'open';
    }
    else {
        $post['ping_status'] = 'closed';
    }

    return $post;
} 

Fazit

Ein richtiges Debugging sollte immer Datei-basiert ablaufen und somit gefällt mir die neue Lösung schon sehr gut. Im Rahmen der weiteren Recherchen habe ich dann noch ein paar Plugins aufgetrieben, die ich in nächster Zeit einmal testen muss:

Derzeit fehlt mir noch ein Zugriff auf die debug.log über das WordPress-Backend (vorzugsweise mit Dashboard-Integration). Kennt hier jemand ein passendes Plugin?

Hallo! Bist du neu hier? Dann abonniere doch den RSS-Feed dieses nicht mehr ganz so stillen Örtchens, um über meine geistigen Ergüsse auf dem Laufenden zu bleiben. Alternativ besteht auch die Möglichkeit, sich von FeedBurner per E-Mail über meine Ausscheidungen benachrichtigen zu lassen.

Kommentar hinzufügen

(If you're a human, don't change the following field)
Your first name.
Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Der Inhalt dieses Feldes wird öffentlich zugänglich angezeigt, aber als nofollow markiert.
Hinweis

Kommentare beleben den Blog! Ich freue mich über jeden Kommentar. Du kannst hier offen Deine Meinung zum Artikel sagen, aber bitte beachte die Netiquette und vermeide es andere zu beleidigen.

Bitte unterlasst es die Kommentare zu SEO-Zwecken zu missbrauchen. Kommentare mit Links, die nicht zu Blogs führen (oder zu Blogs mit Grauzonen-Themen) und/oder Keywords als Namen verwenden und/oder Links im Kommentarbereich enthalten, sind nicht erwünscht!

Möchtest Du mir einen Blog-Artikel schmackhaft machen, dann schreib die URL ohne Link-Tag und ohne http(s):// in den Kommentarbereich und ich werde diesen bei Gefallen verlinken.

Die ersten vier Kommentare (mit den gleichen Daten bei Name, E-Mail und Blog) landen vor der Veröffentlichung in meiner Freigabe-Warteschlange und ich behalte mir das Recht vor, Kommentare entsprechend dieser Regeln anzupassen oder zu löschen!

t3n Magazin - Jetzt im Abo bestellen