Ist es ohne Installation eines Texteditors oder einer IDE möglich zu testen, ob xdebug funktioniert, dh ob es PHP-Code debuggen kann?
Der einzige Teil, den xdebug in phpinfo () enthält, ist der folgende:
Zusätzliche INI-Dateien analysierten /etc/php5/apache2/conf.d/mysql.ini, /etc/php5/apache2/conf.d/mysqli.ini, /etc/php5/apache2/conf.d/pdo.ini, /etc/php5/apache2/conf.d/pdo_mysql.ini, /etc/php5/apache2/conf.d/xdebug.ini
Es wird in der phpinfo () nirgendwo anders erwähnt.
phpinfo()
es als geladene Erweiterung gemeldet? Ist es das, was du mit "arbeiten" meinst?Antworten:
Ohne ein Debugging durchzuführen, können Sie sicher nicht sicher sein, dass ein Debugger funktioniert.
Aber Sie können ziemlich sicher sein - ich denke, man sollte davon ausgehen, dass alles funktionieren würde, wenn einige Aspekte von xDebug funktionieren.
Vor diesem Hintergrund können Sie bestätigen, dass xDebug installiert und installiert ist, indem Sie Folgendes versuchen:
1)
phpinfo()
- Dies zeigt Ihnen alle geladenen Erweiterungen, einschließlich xDebug. Wenn es da ist, ist es eine sichere Wette, dass es funktioniert.2) Wenn Ihnen das nicht gut genug ist, können Sie versuchen, die
var_dump()
Funktion zu verwenden. xDebug ändert die Ausgabe vonvar_dump()
, um zusätzliche Informationen einzuschließen . Wenn dies vorhanden ist, funktioniert xDebug.3) xDebug ändert die Fehlerausgabe von PHP. Wenn Ihr Programm mit xDebug abstürzt, erhalten Sie mehr Informationen über den Fehler als mit der Standard-PHP-Absturzausgabe.
4) xDebug fügt PHP auch eine Reihe von Hilfsfunktionen hinzu. Sie können jedes dieser Verfahren ausprobieren, um festzustellen, ob es funktioniert. Beispielsweise sollte die Funktion
xdebug_get_code_coverage()
vorhanden sein und ein Array zurückgeben. Wenn dies der Fall ist, wird xDebug installiert. Wenn nicht, ist es nicht.quelle
Additional .ini files parsed
. Überprüfen Sie jetzt den Rest Ihrer Vorschläge.xdebug_get_code_coverage()
und ich bekommeFatal error: Call to undefined function xdebug_get_code_coverage() in /var/www/xdebug.php on line 5
./etc/php/conf.d/xdebug.ini
Information, wenn dies der Fall ist, sollten Sie Ihre Datei öffnen , die in zusätzlichen analysierten INI-Dateien erwähnt wird, und alle darin enthaltenen Zeilen auskommentieren.zend_extension=xdebug.so xdebug.remote_enable=on xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.remote_handler=dbgp
/mods-available
Verzeichnis und diese xdebug.ini-Einstellung stand (glaube ich) in Konflikt mit meiner php.ini-Einstellung.Lauf
in Ihrem Terminal, und suchen Sie dann nach
[Zend Modules]
. Es sollte irgendwo da sein, wenn es geladen ist!NB
Wenn Sie Ubuntu verwenden, wird es hier möglicherweise nicht angezeigt, da Sie die xdebug-Einstellungen von
/etc/php5/apache2/php.ini
in hinzufügen müssen/etc/php5/cli/php.ini
. Meine sind[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
quelle
php --version
listet auch mit Xdebug auf, wenn es geladen istphp --version
funktioniert bei mir nicht. Unmittelbar nach dem Start meines Computers, nachdem Apache gestartet wurde und funktioniert,php --version
wirdphpinfo()
Xdebug angezeigt , jedoch kein Xdebug-Abschnitt. Die Ausführung von PHP-Skripten stoppt nicht an Haltepunkten. Nachdem ich laufenservice apache2 restart
,phpinfo()
zeigt die xdebug Abschnitt und Debugging funktioniert. Aus irgendeinem Grund wird xdebug nicht geladen, wenn Apache während des Maschinenstarts gestartet wird. Im Moment muss ich Apache nach jedem Start neu starten.Versuchen Sie Folgendes, sollte "existiert" oder "nicht existiert" zurückgegeben werden:
<?php echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';
quelle
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:
Mit PECL können Sie dann die neueste stabile Version von xdebug installieren:
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:
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:
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!
quelle
sudo apt-get install php5-dev
.php5enmod
erstellt keine Links in INI-Dateien, es funktioniert ordentlich ohne.[xdebug]
Direktive in der INI-Datei ist entscheidend, damit sie funktioniert. Ich war verwirrt darüber, dass in der ursprünglichen INI-Datei das[xdebug]
fehlte, aber für mich funktionierte es nicht ohne.Nur um die Antwort von KsaR zu erweitern und die Möglichkeit zu bieten, xdebug über die Befehlszeile zu überprüfen:
quelle
Sie können diesen kleinen
php
Code ausführen<?php phpinfo(); ?>
Kopieren Sie die gesamte Ausgabeseite und fügen Sie sie in diesen Link ein . Dann analysieren. Es wird angezeigt, ob Xdebug installiert ist oder nicht. Außerdem werden Anweisungen zum Abschluss der Installation gegeben.
quelle
Wenn Sie Eclipse verwenden , beachten Sie bitte, dass während der Ausführung im XDebug-Modus die magische Konstante __FILE__ immer wie folgt ausgewertet wird:
xdebug://debug-eval
Die folgende Prüfung gibt also true zurück, wenn sich Ihre Sitzung unter XDebug befindet:
$is_xdebug = false !== strpos(__FILE__,'xdebug'); // true while on XDebug
quelle
In Ihrer Frage haben Sie erwähnt, dass in Ihrer phpinfo angegeben wurde, dass Apache die Konfiguration von xdebug in /etc/php5/apache2/conf.d/xdebug.ini lädt. In vielen Online-Anweisungen werden Sie möglicherweise darauf hingewiesen, dass Sie aufgefordert werden, die xdebug-Konfiguration in php einzufügen .ini (und das habe ich auch getan) Wenn die Konfiguration jedoch auf /etc/php5/apache2/conf.d/xdebug.ini festgelegt ist, sollten Sie die Konfigurationseinstellungen von [XDebug] aus / etc / php5 / apache2 entfernen /php.ini und fügen Sie es STATT in /etc/php5/apache2/conf.d/xdebug.ini ein. Nachdem ich /etc/php5/apache2/php.ini entfernt und stattdessen /etc/php5/apache2/conf.d/xdebug.ini eingegeben und Apache neu gestartet hatte, funktionierte es !!
Geben Sie daher in Ihre Datei /etc/php5/apache2/conf.d/xdebug.ini Folgendes ein:
[XDebug] zend_extension="/usr/lib/php5/20121212+lfs/xdebug.so" xdebug.remote_enable=1 xdebug.remote_port="9000" xdebug.profiler_enable=1 xdebug.profiler_output_dir="/home/paul/tmp" xdebug.remote_host="localhost" xdebug.remote_handler="dbgp"; xdebug.idekey="phpstorm_xdebug"
Entfernen Sie dies dann aus der Datei /etc/php5/apache2/php.ini, wenn Sie es ebenfalls dort ablegen.
Dann mach:
sudo service apache2 neu starten
Dann sollte es funktionieren !!!
quelle
Ab xdebug 3 können Sie die folgende Befehlszeile verwenden:
php -r "xdebug_info();"
Außerdem werden nützliche Informationen zu Ihrer xdebug-Installation angezeigt.
quelle