PHP Debugger stoppt nicht an Haltepunkten: Eclipse & Xdebug

8

Clientseitige Tools: (Kein Apache, kein PHP)

Eclipse für PHP-Entwickler

Version: Oxygen.2 Release (4.7.2)

Build ID: 20171218-0600

Redhat Enterprise Linux 6.9

Java-Version "1.8.0_101"

Java (TM) SE Laufzeitumgebung (Build 1.8.0_101-b13)

Java HotSpot (TM) 64-Bit-Server-VM (Build 25.101-b13, gemischter Modus)

Remoteserver Wo ist die PHP-Webanwendung:

PHP 5.6.5

Zend Engine v2.6.0 , Copyright (c) 1998-2014 Zend Technologies

mit Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, von Zend Technologies

mit Xdebug v2.2.7, Copyright (c) 2002-2015, von Derick Rethans

Ich habe frühere Beiträge zu diesem Thema gefunden. Ich habe nicht alles verstanden, was ich versuchen sollte. Ich habe versucht, was ich verstehen konnte, aber hatte kein Glück. Meistens nur mit xdebug_break (); (Wieder kein Glück)

Ich verwende Eclipse und Xdebug, um eine entfernte PHP-Website zu debuggen. Mein Problem ist, dass ich den Debugger nicht an den gesetzten Breakpoints stoppen kann.

Ich mache Remote-PHP-Entwicklung mit Eclipse und einem "Synchronized PHP Project". Nichts außer Eclipse läuft auf meinem Computer.

Ich verwende den Xdebug-Debugger auf dem Remote-Server über Eclipse.

Wenn ich den Debugger benutze geht es in die index.php. Ich kann für eine Weile durchgehen und den Wert von Variablen sehen.

Das Problem ist, dass Xdebug an keinem der gesetzten Haltepunkte anhält.

Ich schließe meine Xdebug-Einstellungen ein

Hinweise, wie Sie das Problem finden und beheben können, sind willkommen.

Xdebug-Einstellungen:

%Vor%

Bearbeiten

Ich habe ein Album mit Screenshots erstellt.

Das erste ist eine Fehlermeldung von Eclipse, die passiert, wenn ich die ganze Nacht durchgebe.

Der Rest der Screenshots sind Teile in der Reihenfolge (top- & gt; down) meiner phpinfo Ausgabe.

Ссылка

Es gibt keinen Zend-Abschnitt in meiner phpinfo () -Ausgabe, obwohl es diese vars

gibt %Vor%     
Steve 12.02.2018, 19:03
quelle

4 Antworten

4

Nach Ihrer Beschreibung scheint es so:

  • die Debug-Verbindung zu Ihrem Remote-Server funktioniert
  • breaking points funktionieren auf der index.php, aber nirgendwo anders

Ich gehe davon aus, dass das file mapping zwischen lokalem und Server-Code nicht funktioniert, genauer gesagt kann eclipse Ihre Dateien nicht auf die Server-Maps abbilden.

Um dies zu lösen, müssen Sie die Einstellung Pfadzuordnung in den Ausführen / Debug-Einstellungen Ihres Eclipse-Projekts festlegen.

Gehe zu:

  1. Projekt - & gt; Eigenschaften aus dem Menü
  2. Wählen Sie Run / Debug Einstellungen
  3. Bearbeiten Sie Ihre Startkonfigurationseinstellungen
  4. Wählen Sie auf der Registerkarte Server, Abschnitt PHP-Server , configure aus
  5. Das Fenster "PHP Server" wird geöffnet. Wählen Sie die Registerkarte Pfadzuordnung
  6. Setzen Sie Pfad auf dem Server auf den Pfad Ihres Projekts auf dem Server und legen Sie Lokaler Pfad fest, dies ist selbsterklärend.

    
Jannes Botis 15.02.2018 22:17
quelle
3

Wenn Sie die folgenden Schritte befolgen, sollte es funktionieren

Neueste XDebug-Version

Ihre XDebug-Version stammt aus dem Jahr 2015 gemäß Ссылка . Du solltest also auf die neueste Version upgraden

Einrichten der XDebug-Konfiguration

Richten Sie eine 99-xdebug.ini in Ihrem /usr/local/etc/php/conf.d/ oder /etc/php/conf.d oder /etc/php/5.6/cli/conf.d ein, je nachdem, was auf Ihrem System vorhanden ist

%Vor%

Erstellen Sie einen SSH-Debug-Tunnel

Die Maschine, von der Sie debuggen möchten, Sie müssen einen SSH-Tunnel mit

starten %Vor%

Konfigurieren Sie die Remote-Pfadzuordnung in Eclipse

Konfigurieren Sie Eclipse für das Debugging auf Port 9000 und Remote-Pfaden und jetzt sollte es funktionieren

    
Tarun Lalwani 16.02.2018 19:00
quelle
0
  

Ich mache Remote-PHP-Entwicklung mit Eclipse und einem "Synchronized PHP Project". Nichts außer Eclipse läuft auf meinem Computer.

Das ist dein Problem. Sie müssen xDebug Verbindung erlauben. xDebug (PHP Web Server) versucht sich zu verbinden aber wahrscheinlich keine Ahnung wo du bist;)

Es gibt zwei Optionen:

  1. Wenn Sie nicht hinter NAT oder im selben Netzwerk wie Ihr Testserver sind, müssen Sie Port 9000 auf Ihrem PC öffnen. Wenn Sie hinter NAT sind, müssen Sie auch den Port 9000 weiterleiten (dies ist der Standardwert, der geändert werden kann). Als nächstes setzen Sie richtig "xdebug.remote_host=your_public_ip" oder xdebug.remote_connect_back = on . Wäre auch gut zu akzeptieren Remote-Sitzungen (JIT) von jedem Host (Einstellungen - & gt; PHP - & gt; Debug - & gt; Debuggers - & gt; xDebug), danach können Sie einfach Debugger über Browser-Erweiterung wie xDebug ausführen Helfer.

  2. Konfiguriere Debugger-Startkonfiguration (kleiner Pfeil nach "Debug" -Symbol), um über SSH-Tunnel zu debuggen. In diesem Fall wird xdebug.remote_host=127.0.0.1 korrekt sein. Hinweis: ssh server host muss gleich sein Server-Domäne und SSH-Server müssen auf Port 22 verfügbar sein

zulus 14.02.2018 21:47
quelle
0

Versuchen Sie Dinge zu deaktivieren wie: Opcache, Zend Optimizer und so weiter, alle Erweiterungen, die mit interpretation php code arbeiten. Wenn Sie Glück haben und anfangen zu arbeiten, machen Sie xdebug.so zuletzt, nach allen anderen Modulen, damit Sie sie wieder aktivieren können. Setzen Sie xdebug.so in den Ordner, in dem sich alle anderen php .so befinden, und laden Sie es in die letzte Zeile von php ini, mit vollständiger Pfad zu xdebug.so

Wenn Sie es einfach in die letzte php.ini-Zeile einfügen, können einige inkompatible Module nachher geladen werden, mit config von /etc/php/5.6/apache2/conf.d/*. Also verschiebe einfach die Konfigurationen für eine Weile.

Am Link, im unteren Teil des Posts, deaktiviere ich (, aber nicht durch apt entfernen) opchache module total, und setze es in die php.ini, 1 Zeile vor dem Debugger.

Prüfe die Reihenfolge, wie die Erweiterungen in der phpinfo () -Ausgabe geladen werden, links vom Zend-Logo, wie ich mich erinnere. Der Debugger muss die letzte Zeile in diesem Ausgabe-Block sein. Veröffentlichen Sie phpinfo (); Ausgabe.

Ein anderer Weg, was ich selbst mache: (und ich empfehle es)

Wenn Sie Root-Zugriff auf den Remote-Server haben, versuchen Sie Zend Debugger. Es ist gebündelt mit Zend Studio (nicht kostenlos), aber es gibt separate Downloads von Debugger für einige PHP-Versionen, 5.6 ist die neueste Version, für die es verfügbar ist. Sie veröffentlichen es nicht für php7, aber ich weiß nicht, ob es möglich ist, es aus dem Zend Studio zu kopieren. Wenn es entfernt wurde und nicht heruntergeladen werden kann, kann ich es Ihnen senden.

Zend Debugger sind jetzt nativer für PHP, und Zend Team in Eclipse PDT Entwicklung beteiligt (aber sie realisiert die meisten geschmackvollen Funktionen in kostenpflichtigen Version)

Ich habe eine ähnliche Umgebung wie deine, habe auch Probleme mit XDebug, entschied dann, sie zu entfernen und Zend Debugger zu versuchen. Es gibt meine Frage und Antwort auf askubuntu, über die Installation und die Behebung von Problemen: Ссылка

In wenigen Worten war die Lösung:

  

Kommentieren Sie es in Config: (CLI-Version scheint Symlink zu sein, auch deaktiviert)

lenya@JabbaDesktop:~$ sudo nano /etc/php/5.6/apache2/conf.d/10-opcache.ini

%Vor%
  

Am Ende von /etc/php/5.6/apache2/php.ini:

%Vor%
  

Die ersten zwei Zeilen (.so) sollten genau in dieser Reihenfolge sein.    Installieren von Debugger "How to" einfach in Google zu finden. Niemand erwähnt oben Problem.

Aktualisierung:

  

Wenn ich den Debugger benutze geht es in die index.php. Ich kann für eine Weile durchgehen und den Wert von Variablen sehen.

Das heißt, Sie haben bereits eine Verbindung zum Server, Problem ist nicht dort

    
LeonidMew 14.02.2018 19:59
quelle