Nach einem bitteren, fast 24-stündigen Versuch, xdebug für Netbeans 8.0.2 zum Laufen zu bringen, habe ich eine Lösung gefunden, die hoffentlich für alle Ubuntu- und Ubuntu-bezogenen Stacks funktioniert.
Problem Nummer 1: PHP- und xdebug-Versionen müssen kompatibel sein
Wenn Sie ein Linux-Setup ausführen und apt-get zur Installation von xdebug verwenden, erhalten Sie manchmal nicht die richtige xdebug-Version. In meinem Fall hatte ich die neueste PHP-Version, aber eine alte XDEBUG-Version. Das muss an meiner aktuellen Xubuntu-Version liegen. Softwareversionen sind abhängig von Repositorys, die von der Betriebssystemversion abhängen, die Sie ausführen.
Lösung: PHP hat einen ordentlichen Erweiterungsmanager namens PECL. Befolgen Sie die hier gegebenen Anweisungen , um es in Betrieb zu nehmen. Zunächst sollten Sie, wie von einem Mitglied in den Kommentaren hervorgehoben, das PHP-Entwicklerpaket installieren, damit PECL funktioniert:
sudo apt-get install php5-dev
Mit PECL können Sie dann die neueste stabile Version von xdebug installieren:
sudo pecl install php5-xdebug
Sobald Sie dies tun, wird die richtige Version von xdebug installiert, aber nicht einsatzbereit. Danach müssen Sie es aktivieren. Ich habe viele Vorschläge dazu gesehen, aber Tatsache ist, dass PHP einige Module benötigt, um sowohl für den Client als auch für den Server aktiviert zu werden, in diesem Fall Apache. Es scheint, dass die beste Vorgehensweise darin besteht, die integrierte Methode zum Aktivieren von Modulen namens php5enmod zu verwenden. Die Verwendung wird hier beschrieben .
Problem Nummer 2: Aktivieren Sie das Modul korrekt
Zuerst müssen Sie in den Ordner / etc / php5 gehen. Dort finden Sie 3 Ordner, apache2, cli und mods_available. Der Ordner mods_available enthält Textdateien mit Anweisungen zum Aktivieren eines bestimmten Moduls. Die Namenskonvention lautet [module] .ini. Werfen Sie einen Blick in einige von ihnen und sehen Sie, wie sie eingerichtet sind.
Jetzt müssen Sie Ihre INI-Datei im Ordner mods_available erstellen. Erstellen Sie eine Datei mit dem Namen xdebug.ini und fügen Sie diese in die Datei ein:
[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
Stellen Sie sicher, dass die Direktive [xdebug] genau wie im obigen Beispiel vorhanden ist. Das Modul muss unbedingt funktionieren. Kopieren Sie einfach den gesamten Code und fügen Sie ihn ein. Auf diese Weise werden Sie glücklicher. : D.
Hinweis: Der Pfad zend_extension ist sehr wichtig. In diesem Beispiel zeigt es auf die aktuelle Version der PHP-Engine, aber Sie sollten zuerst zu / usr / lib / php5 gehen und sicherstellen, dass der Ordner mit den Namen der richtige ist. Passen Sie den Namen an das an, was Sie dort sehen, und überprüfen Sie, während Sie gerade dabei sind, im Ordner, ob die Datei xdebug.so wirklich vorhanden ist. Es sollte sein, wenn Sie alles richtig gemacht haben.
Nachdem Sie Ihre xdebug.ini erstellt haben, ist es Zeit, das Modul zu aktivieren. Öffnen Sie dazu eine Konsole und geben Sie Folgendes ein:
php5enmod xdebug
Wenn alles richtig lief, erstellte PHP zwei Links zu dieser Datei, einen in /etc/php5/apache2/conf.d und einen in /etc/php5/cli/conf.d
Starten Sie Ihren Apache-Server neu und geben Sie dies in die Konsole ein:
php -v
Sie sollten so etwas bekommen:
PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans
Dies bedeutet, dass der PHP-Client Ihre Datei xdebug.ini gelesen und das Modul xdebug.so geladen hat. So weit, ist es gut.
Erstellen Sie nun irgendwo auf Ihrem Webserver ein phpinfo-Skript und führen Sie es aus. Das sollten Sie sehen, wenn alles schief gelaufen ist:
Wenn Sie dies sehen, hat Apache auch das Modul geladen, und Sie sind wahrscheinlich bereit zu gehen. Nun wollen wir sehen, ob Netbeans korrekt debuggt. Erstellen Sie ein sehr einfaches Skript, fügen Sie einige Variablen hinzu, geben Sie ihnen Werte und legen Sie einen Haltepunkt fest. Drücken Sie nun STRG + F5, klicken Sie in Ihrem Debugger-Bereich auf "Einsteigen" und prüfen Sie, ob Sie Folgendes erhalten:
Denken Sie daran, die Netbeans-Konfiguration für das Debuggen unter tools / options / php zu überprüfen. Es sollte ungefähr so aussehen:
Ich hoffe, dies wirft ein Licht auf dieses eher dunkle, verwirrende Problem.
Die besten Wünsche!
phpinfo()
es als geladene Erweiterung gemeldet? Ist es das, was du mit "arbeiten" meinst?