it-swarm.com.de

So debuggen Sie eine von Drittanbietern aufgerufene Datei

Ich habe ein Skript, das von einem Drittanbieter-Skript aufgerufen wird, aber es funktioniert nicht. Ich kann in den Protokollen sehen, dass die Datei tatsächlich aufgerufen wird, nur passiert nichts.

Wie können Sie eine von einem Drittanbieter aufgerufene Datei debuggen?

  • Ich kann die Datei aufgrund von Sicherheitsüberprüfungen nicht über die Befehlszeile/eine andere Datei aufrufen
  • Die dritte Partei ist ein automatisierter Prozess, ich kann sie nicht um Hilfe bitten
  • Ich weiß nicht, ob der Code richtig funktioniert, nichts tut oder einen Fehler aufweist
    • Dies ist eine ältere Website (oder eine weniger professionelle Website) . Eine ordnungsgemäße Fehlerbehandlung ist nicht vorhanden

bisher beste Lösung:
Platzieren Sie eine Reihe von file_put_contents($loc.'/a-1.txt', '') (wobei der 1 jedes Mal erhöht wird) und sehen Sie, wie viele Dateien erstellt/aktualisiert werden, wenn Sie das Skript ausführen lassen.
Dies ist langsam und zeigt mir nur, wie der Code fließt, nicht die tatsächlichen Fehler. Das ist also nicht sehr effizient.

Ich habe einige Themen gefunden, in denen es darum geht, STDIN, STDOUT und STDERR zu ändern, aber ich kann diese scheinbar nicht sofort zum Laufen bringen.

2
Martijn

Dies ist eines der absolut schlimmsten Szenarien, wenn Sie ein altes, schlecht gestaltetes, schlecht dokumentiertes Webprojekt vererben, das sich nicht einfach debuggen lässt. Jeder Code, geschweige denn solch ein unternehmenskritischer autonomer Code, sollte gut dokumentiert sein und gründliche Fehlerberichte enthalten. Unter der Annahme, dass dies in einer Sprache wie PHP geschehen ist, können Sie die Fehlerprotokollierungsstufe auf informativ erhöhen, wodurch jede letzte vom Server möglicherweise generierte Fehlermeldung angezeigt wird. Hiermit werden alle Fehler gemeldet, die von der Sprache und nicht vom Code behandelt werden. Der nächste Schritt wäre, den Code durchzugehen und an einer beliebigen Stelle zu identifizieren, an der der Code Daten an die Verbindung ausgibt (vorausgesetzt, bei einer http-artigen Verbindung werden Daten, die effektiv zum Ausgeben in den Puffer "gedruckt" werden), und die Protokollierung hinzuzufügen, damit alle Daten vorhanden sind in Datei protokolliert. Wenn Sie jede Instanz der Datenausgabe mit Details zu der Zeile, in der sie generiert wurde, zu einem Array hinzufügen, können Sie bei jeder Anforderung an den Webdienst alle Daten einmal in eine Datei verschieben, um die Verzögerungen beim Schreiben von Dateien zu minimieren, und dann die Informationen auslesen zurück zur Bank geschickt.

Es wird extrem schwierig und kompliziert, aber es gibt nicht viel mehr, was kurzfristig getan werden kann, um das Problem zu identifizieren. Langfristig sollten Sie unbedingt den Code durcharbeiten und die Überprüfung der Integrität, die Datenüberprüfung sowie die Fehlerprotokollierung und -meldung durchführen. Grundsätzlich sollte alles, was die Ausführung des Codes verhindert, so protokolliert werden, dass Sie nicht nur feststellen können, was der Fehler war, sondern auch, was den Fehler verursacht haben könnte, an welchen Daten gearbeitet wurde und in welcher Zeile der Fehler aufgetreten ist auf.

1