Ich wurde mit der Einrichtung einer Website in verschiedenen Umgebungen für verschiedene Bewertungsstufen beauftragt (dev/test/staging/etc).Wie debugge ich ein PHP-Skript, das nie geladen wird?
In unserer Staging-Umgebung scheint es jedoch einen Unterschied zu geben, der das Beenden des PHP-Skripts verhindert, sodass die Seite nie an den Browser geliefert wird.
Ich frage mich, ob es eine Möglichkeit gibt, die ich ausgeben kann, um eine Art von Stack - Trace oder Backtrace zu protokollieren, oder gibt es eine andere Methode, um herauszufinden, was genau PHP an einem bestimmten Punkt in der tut Drehbuch-Lebenszyklus?
Es ist eine Drupal-Site, also enthält es eine Menge Code, den ich nicht kenne, und es könnte Stunden dauern, ganze die;
Befehle zu besprengen, um zu sehen, wo das Skript geladen wird.
Ich verstehe, ich sollte wahrscheinlich die Unterschiede in den Umgebungen betrachten, aber alle sollten sehr ähnliche Konfiguration haben (Ubuntu 11.04) und die Staging-Umgebung scheint völlig zufrieden zu sein, andere PHP-Seiten zu bedienen, während diese bestimmte Seite ablehnt zu beenden. Wenn überhaupt, verfügt diese Staging-Site über mehr Ressourcen als andere Umgebungen, die keine Probleme haben.
UPDATE: Sorry alle, fand das Problem am Ende. Die Staging-Umgebung befand sich in einem VLAN, das über öffentliche IP-Adressen nicht auf sich selbst zugreifen durfte. Aus irgendeinem Grund versuchte sie (immer noch verwirrt), während des Ladens der Seite auf sich selbst zuzugreifen und die Anfrage nie abzuschließen. Durch Festlegen eines Hosts-Dateieintrags für 127.0.0.1 wurde das Problem behoben.
Haben Sie in xdebug nachgeschaut? –
Ist ein Schritt-für-Schritt-Debugger eine Option? http://xdebug.org/docs/remote –
Wenn Sie 'die()' 'verwenden möchten, dann tendiere ich dazu, die gleiche Methode wie beim Erraten einer Zahl von 1 bis 1000 zu verwenden. Erste Starthälfte Weg (500), und wenn es dann nicht zu diesem Punkt kommt, dann muss der Punkt vorher sein, und Sie wieder einmal die Hälfte (250) usw. – h2ooooooo