IHS Debugger Dokumentation

Einleitung

Dies ist die Dokumentation des IHS Debugger. Dieses Skript wurde entwickelt um Probleme beim IHS, insbesondere beim Upload, zu analysieren und Lösungen zu diesen finden. Der Debugger hängt sich an den Upload-Prozess des IHS und meldet, wenn er Probleme findet. Zur Ausführung des Skripts wird mindestens PHP 5 benötigt.

Copyright und Lizenz

Der IHS Debugger und die Dokumentation © 2008 by Michael Mayr. Das Skript darf beliebig benutzt und kostenlos weitergegeben werden, solange der Code nicht verändert wird.

Changelog

Version 1.3

  • Überschreiben des Error-Reportings des IHS möglichs um fatale PHP-Fehler anzuzeigen
  • Analysefunktion für den Remote-Upload im ACP
  • Aufruf ist nur noch über die admin.php möglich
  • Menü neu gestaltet
  • Kleinere Design- und HTML-Fehler behoben
  • Unzählige weitere kleinere Änderungen

Version 1.2

  • Warnung wenn Multi-Upload aktiviert
  • Administration
    • Versand von Test-E-Mails
    • Einstellungen
      • Debugger aktivieren/deaktivieren
      • Anzeige der Debugger-Nachrichten aktivieren/deaktivieren
      • Meldungen nur für Administratoren anzeigen
      • Debugger-Log aktivieren/deaktivieren
      • PHP-Log aktivieren/deaktivieren
    • Logs für Debugger- und PHP-Meldungen
  • Anzeige der PHP-Fehler die während eines Aufrufs aufgetreten sind
  • Diagnose-Tool für häufige Probleme bei den PHP-Einstellungen

Version 1.1

  • allow_url_fopen Meldung korrigiert
  • Temporäre Datei wird nun automatisch gelöscht

Installation

Die Installation ist recht einfach: Kopieren Sie die Datei IHS_Debug.php in das Verzeichnis includes und machen Sie folgende Änderungen an den genannten IHS-Dateien:

Ans Ende der config.php.php (vor dem ?>) einfügen:

/**
 * IHS Debug
 */
require_once(UPLOADER_DIR '/includes/IHS_Debug.php');

Diese Änderung in der index.php ausführen:

// Suche
$upload $Matpo_Upload->Upload($tmp_name$name$upload_von);

// Direkt darunter einfügen
IHS_Debug::instance()->uploadHook($upload['error']);

Ans Ende der index.php (vor dem ?>) einfügen:

/**
 * IHS Debugger PHP __destruct Fix
 */
IHS_Debug::instance()->pageEnd();

Nach diesen Schritten ist der Debugger "scharf geschaltet" und überwacht jeden Upload-Vorgang. Sollte es Probleme geben wird dieser dies analysieren und das Ergebnis am Seitenkopf anzeigen.

Sicherheits-Hinweis

Der IHS-Debugger sollte nicht dauerhaft in Produktionsumgebungen benutzt werden. Der Autor des Tools haftet nicht für Schäden, die durch das Tool entstehen können. Benutzen Sie wenn Möglich die Einstellung im ACP, Meldungen nur für Administratoren anzuzeigen.

Update auf Version 1.3

Nur die IHS_Debug.php ersetzen, die Datenbankeinträge werden automatisch aktualisiert.

Deinstallation

Im ACP-Menü "Deinstallation" ausführen, die Dateien rückwärts bearbeiten (die zusätzlichen Zeilen löschen) sowie die Datei IHS_Debug.php löschen. Das war's!

Administration

Seit Version 1.2 enthält der IHS Debugger eine vollständige Administration mit zusätzlichen Funktionen. Der Aufruf der Administration ist über den Punkt "IHS Debugger" im IHS ACP-Menü.

Einstellungen

Debugger aktivieren

Mit dieser Funktion lässt sich der Debugger aktivieren und deaktivieren. Das Verhalten dieser Funktion hat sich in Version 1.3 geändert. In der Vorversion wurde bei Deaktivierung lediglich die Upload-Analyse deaktiviert, in Version 1.3 werden alle zusätzlichen Funktionen (z. B. PHP Logger) deaktiviert.

Fehler im Front-End anzeigen

Bei Deaktivierung werden keine Meldungen bei einem erfolglosen Upload angezeigt, sondern nur in der Datenbank gespeichert (falls aktiviert)

Meldungen nur bei Administratoren anzeigen

Bei Aktivierung werden Meldungen bei erfolglosen Uploads nur für Benutzer mit Administrator-Rechten angezeigt, dies ist vor allem bei Produktivumgebungen empfehlenswert.

Debugger-Log aktivieren

Dieser Log protokolliert alle Fehler die vom Debugger gemeldet werden, z. B. erfolglose Uploads.

PHP-Log aktivieren

Dieser Log protokolliert alle Fehler die von PHP selbst gemeldet werden. Diese können vor allem bei der Fehlersuche des Remote-Uploads helfen.

Alternativen Front-End-Modus

Aktivieren Sie diese Option, wenn im Front-End trotz aktivierter Einstellung keine Meldung angezeigt werden. Dieses Problem ist bei ein paar wenigen PHP-Installationen aufgefallen, die Option kann meist deaktiviert bleiben.

Error-Reporting überschreiben

Wenn diese Funktion aktiviert wird, werden sämtliche PHP-Fehler angezeigt. Normalerweise deaktiviert das IHS diese Anzeige komplett was bei fatalen PHP-Fehlern (Fatal Error) die Folge hat, dass nur eine leere Seite angezeigt wird. Mit dieser Funktion wird der eigentliche Grund für das Problem angezeigt.

Debugger Log

Dieser Log protokolliert alle Fehler die vom Debugger gemeldet wurden, z. B. erfolglose Uploads. Falls dieser nicht benötigt wird, kann er über die Einstellungen deaktiviert werden.

PHP Log

Dieser Log protokolliert alle Fehler die von PHP selbst gemeldet wurden. Falls dieser nicht benötigt wird, kann er über die Einstellungen deaktiviert werden, um die Anzahl der Datenbankanfragen zu verringern.

Creating default object from...

Diese Zeile wird öfters im PHP-Log gelistet. Dies ist ein Fehler im IHS, welcher sich recht einfach beheben lässt. Über die vom Debugger genannte Zeile diesen Code einfügen:

$verbraucht_webspace = new stdClass;

Systemtest

Diese Funktion prüft die Einstellungen und Dateirechte Ihres Systems und meldet mögliche Probleme.

Remote-Upload Test

Der Remote-Upload Test versucht mit drei verschiedenen Methoden (allow_furl_open, fsockopen und PHP Sockets) Dateien von verschiedenen Servern herunterzuladen. Sollte die erste Methode nicht, aber eine der anderen beiden Methoden funktionieren, kann diese in das IHS eingebaut werden.

E-Mail Test

Mit dieser Funktion kann getestet werden, ob das IHS E-Mails versenden kann.

Unterstützen

Mit dieser Funktion erhalten Sie mehr Informationen, wie Sie bei der Entwicklung des IHS und des Debuggers helfen können.

Probleme

Dies ist die Auflistung aller Probleme die der Debugger erkennt und mögliche Lösungen für diese.

PHP-Fehlercodes

Diese Fehlercodes werden direkt von PHP gesendet und beschreiben meist Probleme die mit der Konfiguration von PHP zusammenhängen.

Code 1

Meldung des Debuggers: Die Datei ist größer als das in er php.ini festgelegte Limit von xxx.

Diese Meldung tritt auf, wenn die hochgeladene Datei größer ist als die Einstellung max_upload_filesize in der php.ini. Zur Behebung des Problems gibt es mehrere Möglichkeiten:

  • Wert der Einstellung in der php.ini erhöhen
  • Das Bild vor dem Upload mit einem Bildverarbeitungsprogramm verkleinern

Code 2

Meldung des Debuggers: Die Datei ist größer als der im Formular angegebene Wert von MAX_FILE_SIZE: xxx

Diese Meldung wurde nur der Vollständigkeit halber in den Debugger aufgenommen und sollte im IHS nie angezeigt werden, da dieses die Funktion nicht benutzt.

Code 3

Meldung des Debuggers: Die Datei konnte nur teilweise hochgeladen werden.

Mehr Informationen kann ich zwecks Mangel an Informationen nicht angeben, bin über einen Hinweis dankbar!

Code 4

Meldung des Debuggers: Es wurde keine Datei hochgeladen.

Beim IHS ein Universalgrund für viele Problem, für PHP nur eine Möglichkeit: Es wurde das Formular abgesandt ohne eine Datei anzugeben.

Code 6

Meldung des Debuggers: Es ist kein temporäres Verzeichnis zum Zwischenspeichern der Datei vorhanden. Bitte den in der php.ini angegebenen Pfad überprüfen.

Dieses Problem kann mehrere Ursachen haben:

  • Falsch eingestelltes temporäres Verzeichnis
  • Keine Zugriffsrechte oder nicht vorhandenes Verzeichnis

Als Lösungsmöglichkeiten stehen diese zur Auswahl:

  • Konfiguration korrigieren, bzw. Webhoster kontaktieren
  • Upload-Ordner falls nicht vorhanden erstellen
  • Zugriffsrechte des Upload-Ordners korrigieren, z.B. chmod 0777 bei unixartigen System

Code 7

Meldung des Debuggers: Konnte Datei nicht auf dem Server speichern. Bitte prüfen Sie ob Sie noch genügend Speicherplatz besitzen.

Die Meldung sagt schon alles. ;)

Code 8

Meldung des Debuggers: Datei wurde wegen der Dateierweiterung vom Server abgelehnt. Bitte prüfen Sie Ihre PHP-Konfiguration.

Mehr Informationen kann ich zwecks Mangel an Informationen nicht angeben, bin über einen Hinweis dankbar!

IHS-Fehlercodes

Diese Fehlercodes werden vom IHS gesendet.

Code 1

Meldung des Debuggers: IHS schickte Fehler 1: Es wurde keine Datei zum Upload angegeben.

Code 2

Meldung des Debuggers: IHS schickte Fehler 2: Unbekanntes Problem.

Genauere Informationen nicht möglich, das Problem tretet häufig beim Remote-Upload auf.

Code 3

Meldung des Debuggers: IHS schickte Fehler 3: Datei hat falsche Endung oder konnte nicht erkannt werden. Vom IHS werden nur die Dateitypen jpg, gif und png unterstützt.

Code 4

Meldung des Debuggers: IHS schickte Fehler 4: Die Datei überschreitet die in den Einstellungen angegebene Maximalgröße.

Code 5

Meldung des Debuggers: IHS schickte Fehler 5: Datei konnte nicht in den Datenordner kopiert werden.

Meist wird zu dieser Meldung detailiertere Meldungen des Debuggers angezeigt.

Code 6

Meldung des Debuggers: IHS schickte Fehler 6: Maximale Anzahl der hochladbaren Bilder des aktuellen Benutzers erreicht oder überschritten.

Code 7

Meldung des Debuggers: IHS schickte Fehler 7: Maximal benutzerbarer Speicherplatz des aktuellen Benutzers erreicht oder überschritten.

Debugger-Nachrichten

Diese Nachrichten werden vom Debugger gesendet wenn dieser Probleme erkannt hat.

Uploadverzeichnis fehlt

Bei diesem Fall wird die Datei korrekt hochgeladen, jedoch kann das IHS diese nicht in seinen Datenordner kopieren, weil dieser nicht vorhanden ist. Unter Windows kann diese Meldung auch bei fehlenden Zugriffsrechten erscheinen. Als Lösung einfach einen Ordner namens "daten" im IHS-Ordner erstellen.

Zugriffsrechte

Bei diesem Fall wird die Datei korrekt hochgeladen, jedoch kann das IHS diese nicht in seinen Datenordner kopieren, weil es nicht auf den Ordner zugreifen darf. Prüfen Sie die Zugriffsrechte und korrigieren Sie diese gegebenfalls.

allow_furl_open deaktiviert

Diese Funktion wird für den Remote-Upload benötigt. Falls diese deaktiviert wird, ist dieser nicht mehr möglich. Meist erkennt das IHS dieses Problem bereits während der Installation und deaktiviert den Remote-Upload. Als Lösung bleibt nur, diesen Wert zu aktivieren oder auf den Remote-Upload zu verzichten.

Multi-Upload nicht unterstützt

Diese Meldung erscheint wenn der Debugger meint, dass ein Multi-Upload-Mod installiert ist. Diese werden momentan nicht vom Debugger unterstützt.

Nicht dokumentiert

Alternative Remote-Upload-Methoden

Zum Schluss

Die Entwicklung der Debugger und das Schreiben dieses Dokument hat viel Zeit und Nerven gekostet, daher wäre ein Dank und/oder ein Link auf michfrm.net sehr nett. ;)

Feedback bitte mir per PN auf MatPo.de senden.