webentwicklung-frage-antwort-db.com.de

PhpStorm empfängt keine xdebug-Verbindungen: PhpStorm-Ereignisprotokoll: Der Ausdruck 'isset ($ _ SERVER [' PHP_IDE_CONFIG '])' kann nicht ausgewertet werden.

Ich habe alles so konfiguriert, dass PhpStorm und Xdebug funktionieren. Ich verwende Ubuntu 14.04. 

die Verbindung zur IDE wird nicht hergestellt, und ich bekomme dies im Ereignisprotokoll IDE 

Kann externe Xdebug-Verbindung nicht akzeptieren: Der Ausdruck 'isset ($ _ SERVER [' PHP_IDE_CONFIG '])' kann nicht ausgewertet werden - Osama Salama vor 13 Minuten 

Ich werde Konfigurationswerte zusammenstellen, die ich an verschiedenen Stellen konfiguriert habe. Da ich nicht herausfinden kann, wo das Problem liegt 

php.ini

zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_Host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_connect_back = 1
xdebug.remote_autostart = 1
xdebug.remote_log=xxx/xdebug.log
xdebug.IDE_key=PHPSTORM

PHP-Info

xdebug

xdebug support  enabled
Version 2.3.1
IDE Key PHPSTORM

Supported protocols Revision
DBGp - Common DeBuGger Protocol $Revision: 1.145 $

Directive   Local Value Master Value

xdebug.auto_trace   Off Off
xdebug.cli_color    0   0
xdebug.collect_assignments  Off Off
xdebug.collect_includes On  On
xdebug.collect_params   0   0
xdebug.collect_return   Off Off
xdebug.collect_vars Off Off
xdebug.coverage_enable  On  On
xdebug.default_enable   On  On
xdebug.dump.COOKIE  no value    no value
xdebug.dump.ENV no value    no value
xdebug.dump.FILES   no value    no value
xdebug.dump.GET no value    no value
xdebug.dump.POST    no value    no value
xdebug.dump.REQUEST no value    no value
xdebug.dump.SERVER  no value    no value
xdebug.dump.SESSION no value    no value
xdebug.dump_globals On  On
xdebug.dump_once    On  On
xdebug.dump_undefined   Off Off
xdebug.extended_info    On  On
xdebug.file_link_format no value    no value
xdebug.force_display_errors Off Off
xdebug.force_error_reporting    0   0
xdebug.halt_level   0   0
xdebug.idekey   no value    no value
xdebug.max_nesting_level    256 256
xdebug.max_stack_frames -1  -1
xdebug.overload_var_dump    On  On
xdebug.profiler_aggregate   Off Off
xdebug.profiler_append  Off Off
xdebug.profiler_enable  Off Off
xdebug.profiler_enable_trigger  Off Off
xdebug.profiler_enable_trigger_value    no value    no value
xdebug.profiler_output_dir  /tmp    /tmp
xdebug.profiler_output_name cachegrind.out.%p   cachegrind.out.%p
xdebug.remote_autostart On  On
xdebug.remote_connect_back  On  On
xdebug.remote_cookie_expire_time    3600    3600
xdebug.remote_enable    On  On
xdebug.remote_handler   dbgp    dbgp
xdebug.remote_Host  127.0.0.1   127.0.0.1
xdebug.remote_log   /home/nautilus/Desktop/xdebug.log   /home/nautilus/Desktop/xdebug.log
xdebug.remote_mode  req req
xdebug.remote_port  9000    9000
xdebug.scream   Off Off
xdebug.show_exception_trace Off Off
xdebug.show_local_vars  Off Off
xdebug.show_mem_delta   Off Off
xdebug.trace_enable_trigger Off Off
xdebug.trace_enable_trigger_value   no value    no value
xdebug.trace_format 0   0
xdebug.trace_options    0   0
xdebug.trace_output_dir /tmp    /tmp
xdebug.trace_output_name    trace.%c    trace.%c
xdebug.var_display_max_children 128 128
xdebug.var_display_max_data 512 512
xdebug.var_display_max_depth    3   3

Ich habe auch die Remote-Debugging-Umgebung validiert. es ist alles gut.https://www.jetbrains.com/phpstorm/help/validating-the-configuration-of-a-debugging-engine.html was ebenfalls gut war.

Der letzte mögliche Ausweg ist die xdebug-Protokolldatei:

Log opened at 2015-03-13 14:39:01
I: Checking remote connect back address.
W: Remote address not found, connecting to configured address/port: 127.0.0.1:9000. :-|
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="dbgp://stdin" language="PHP" protocol_version="1.0" appid="4474"><engine version="2.3.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2015 by Derick Rethans]]></copyright></init>
<- feature_set -i 1 -n show_hidden -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="show_hidden" success="1"></response>
<- feature_set -i 2 -n max_depth -v 1
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="2" feature="max_depth" success="1"></response>
<- feature_set -i 3 -n max_children -v 100
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="3" feature="max_children" success="1"></response>
<- status -i 4
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="status" transaction_id="4" status="starting" reason="ok"></response>
<- step_into -i 5
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="5" status="stopping" reason="ok"></response>
<- eval -i 6 -- aXNzZXQoJF9TRVJWRVJbJ1BIUF9JREVfQ09ORklHJ10p
-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="eval" transaction_id="6"><error code="5"><message><![CDATA[command is not available]]></message></error></response>
Log closed at 2015-03-13 14:39:01
18
Osama Salama

Ich hatte in PhpStorm genau den gleichen Fehler wie das OP.

Diese Antwort auf eine andere Frage löste das Problem für mich, aber ich möchte in meiner eigenen Antwort etwas mehr Details hinzufügen.

Das Hauptproblem war xdebug falsch geladen. Die in anderen Antworten erwähnten Server-Mapping-Probleme waren für mich kein Problem.

Wenn Sie Ihre phpinfo()-Seite laden und den xdebug-Abschnitt finden, sehen Sie Folgendes:

 XDEBUG NOT LOADED AS ZEND EXTENSION

XDEBUG wurde nicht als ZEND EXTENSION geladen

Dann müssen Sie das beheben, bevor Sie etwas anderes ausprobieren! Manchmal kann dies jedoch einige Arbeit erfordern, wenn Sie mehrere php.ini-Dateien haben.

Suchen Sie auch auf der Seite phpinfo() nach "php.ini" (sie sollte sich ganz oben befinden) und sehen Sie den Pfad "Konfigurationsdatei (php.ini)" und Ihre "geladene Konfigurationsdatei". Hier kann Ihr xdebug geladen werden.

 enter image description here

In meinem Fall habe ich es korrekt als Zend-Erweiterung in meine Hauptkonfigurationsdatei in /usr/local/lib/php.ini geladen, wie folgt:

zend_extension = "/usr/local/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so"

Aber in meiner Loaded-Konfigurationsdatei in /home/someuser/public_html/php.ini hatte ich es falsch geladen:

extension=xdebug.so

Nachdem ich das behoben habe, funktioniert das Remote-Debugging mit PhpStorm wieder für mich.

Als Randbemerkung war der erste Fehler, den ich in PhpStorm sah, genau derselbe, den das OP erwähnt, und hier sieht es so aus:

 PhpStorm xdebug server variables error

Cannot accept external Xdebug connection
Cannot evaluate expression 'isset($_SERVER['PHP_IDE_CONFIG'])'

(Zuerst dachte ich, dass PhpStorm den PHP Code auf dem Server nicht ausführen konnte, da die Erweiterung nicht ordnungsgemäß geladen wurde. Aber jetzt denke ich, dass PhpStorm PHP-Code nur ausführt, wenn Sie einen Interpreter konfiguriert haben, was nicht der Fall ist zum Debuggen erforderlich. Zum Debuggen benötigt PhpStorm nur die xdebug-Verbindung und die richtigen Pfadzuordnungen.)

Später fand ich den Fehler "Befehl ist nicht verfügbar" im xdebug-Protokoll auf meinem Server, was mich zur Lösung führte.

Folgendes habe ich übrigens in meinem lokalen php.ini für xdebug:

;extension=xdebug.so <- this is the bad line commented!
zend_extension = "/usr/local/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so"

xdebug.remote_enable=true
xdebug.remote_port="9000"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp/xdebug-someuser/"
xdebug.profile_enable_trigger=1
xdebug.trace_enable_trigger=1
xdebug.idekey="PHPSTORM"
xdebug.remote_log="var/log/xdebug/xlog"
16
Buttle Butkus

Ich hatte kürzlich das gleiche Problem beim Debuggen mit PHPStorm unter nginx und php-fpm. In meinem Fall war dies nicht mit xdebug, nginx oder php-fpm config verbunden, es fehlten die Pfadzuordnungen in phpstorm

Anfangs wird PHPStorm Sie benachrichtigen, wenn eine Datei auf dem Server keiner lokalen Quelldatei zugeordnet werden kann, jedoch eine Zuordnung zu dem ersten Treffer der Datei (normalerweise index.php oder einem ähnlichen Code), jedoch keine später verwendete Datei (in In diesem Fall war dies der Autoloader im Herstellerverzeichnis eines Projekts, das Composer verwendet.) PHPStorm kann dann nicht mehr debuggen, und das Debugging wird angehalten.

Um dies in PHPStorm zu korrigieren, gehen Sie zu settings/Languages & Frameworks/PHP/Servers und stellen Sie sicher, dass der Stamm Ihres Projekts dem zugehörigen Verzeichnis auf dem Server korrekt zugeordnet ist.

PHPStorm sollte dann in der Lage sein, alle Dateien in Ihrem Projekt zuzuordnen, und das Debugging sollte fortgesetzt werden.

Ich hoffe das hilft.

8
Andrew Boxer

Für alle anderen Benutzer, die an diesem Problem teilnehmen, gibt es eine weitere mögliche Konfigurationsoption, die möglicherweise fehlt.

Stellen Sie sicher, dass Sie Ihren Server richtig konfiguriert haben, um die richtige Pfadzuordnung zwischen Ihren lokalen und Remote-Dateien zu verwenden.

Wenn Ihr Site-Root beispielsweise lokal unter /home/foo/www/mysite bereitgestellt ist, aber auf dem Server unter /www/mysite installiert ist, müssen Sie Ihre Serverkonfiguration in PHPStorm bearbeiten, um Pfadzuordnungen zu verwenden (geben Sie einfach /www/mysite in das Feld neben /home/foo/www/mysite ein).

1
iainp999

Auch derselbe Fehler, wenn Sie die Umgebungsvariable in docker-compose.yml für Ihre Arbeitsbereichskonfiguration nicht festgelegt haben:

workspace: build: environment: - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}

1
Augustas

Debuggen einer Datei mit dem Namen «test.php» in IntelliJ IDEA/PhpStorm kann dazu führen zum Fehler "Kann den Ausdruck" isset($_SERVER['PHP_IDE_CONFIG']) "" nicht auswerten.
Verwenden Sie einen anderen Namen für die Datei.

1
Mage2.PRO

Ich hatte auch dieses Problem und versuchte jeden Trick, den ich finden konnte, aber nichts funktionierte. Für mich funktioniert das Debuggen meistens, aber manchmal hört es einfach mit der Meldung auf: "Externe Xdebug-Verbindung kann nicht akzeptiert werden: Der Ausdruck 'isset ($ _ SERVER [' PHP_IDE_CONFIG '])'" kann nicht ausgewertet werden.

So wurde mir schließlich klar, dass ich einen Kompilierungsfehler in meinem Code hatte (falsch geschriebener Methodenname - PhpStorm meldet diese Dinge nicht immer, zumindest in meinem Setup). Sobald ich den Fehler behoben habe, funktionierte das Debugging wieder. Vielleicht kann dies jemandem helfen, der zu kämpfen hat.

Obwohl ich immer noch Probleme damit habe, dass Haltepunkte nicht getroffen werden, kann ich ein "xdebug_break ();" Zeile im Code und Debugging wird zuverlässiger. Der Nachteil bei der Verwendung von xdebug_break anstelle von Haltepunkten ist (abgesehen von der Tatsache, dass mehr Arbeit als das Hinzufügen eines Haltepunkts erforderlich ist), dass die lokalen Variablen aus irgendeinem Grund nicht im PhpStorm-Debugger angezeigt werden (nur Globals werden angezeigt). Das macht das Debuggen weniger bequem, aber zumindest kann ich es funktionieren lassen.

Anscheinend können Sie nicht alles haben:) Aus der Java-Welt kommend, ist gutes Debuggen nur etwas, das ich als selbstverständlich betrachten konnte, aber ich habe jetzt gemerkt, wie verwöhnt ich war :)

1
popstr

Eine andere Sache ist, sicherzustellen, dass Sie Ihre Firewall deaktivieren und welche Remoteverbindungen blockiert.

0
Marius.C