PhpStorm non riceve connessioni xdebug: Log events PhpStorm: imansible valutare l'espressione 'isset ($ _ SERVER )'

Ho configurato tutto per far funzionare PhpStorm e xdebug, sto usando Ubuntu 14.04.

la connessione all'IDE non è stata stabilita e ottengo questo nel registro degli events IDE

Imansible accettare la connessione Xdebug esterna: imansible valutare l'espressione 'isset ($ _ SERVER [' PHP_IDE_CONFIG '])' – Osama Salama 13 minuti fa

Metterò insieme i valori di configuration che ho configurato in vari luoghi. Come non riesco a scoprire where è il problema

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 

Informazioni PHP

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 

Ho anche validationto l'env di debug remoto. Va tutto bene. https://www.jetbrains.com/phpstorm/help/validating-the-configuration-of-a-debugging-engine.html che è anche uscito bene.

L'ultima risorsa ansible è il file di registro xdebug:

 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 

Ho avuto lo stesso errore in PhpStorm come l'OP.

Questa risposta a una domanda diversa ha risolto il problema per me, ma vorrei aggiungere ulteriori dettagli nella mia risposta.

Il problema principale è stato xdebug caricato in modo errato. I problemi di mapping del server citati in altre risposte non erano un problema per me.

Se carichi la tua pagina phpinfo() e trovi la sezione xdebug, e vedi questo:

XDEBUG NON ​​CARICATO COME ESTENSIONE DI ZEND

XDEBUG NON ​​CARICATO COME ESTENSIONE DI ZEND

Allora devi aggiustarlo prima di provare qualcos'altro! Ma a volte questo può richiedere un po 'di lavoro per rintracciare, se si dispone di più file php.ini .

Anche nella tua pagina phpinfo() , cerca "php.ini", (dovrebbe essere proprio vicino alla cima) e vedi il tuo "Percorso di configuration (php.ini) Path" e il tuo "Loaded Configuration File". Quelle sono le posizioni in cui può essere caricato il tuo xdebug.

inserisci la descrizione dell'immagine qui

Nel mio caso, l'ho caricato correttamente come estensione Zend nel mio file di configuration principale in /usr/local/lib/php.ini, in questo modo:

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

Ma nel mio file di configuration caricata in /home/someuser/public_html/php.ini, ho caricato in modo errato in questo modo:

 extension=xdebug.so 

Dopo aver risolto ciò, il debug remoto con PhpStorm funziona di nuovo per me.

Come nota a margine, il primo errore che ho visto in PhpStorm era esattamente lo stesso che l'OP accenna, ed ecco come appare:

Errore delle variabili del server xdebug PhpStorm

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

(All'inizio pensavo che, poiché l'estensione non era stata caricata correttamente, PhpStorm non era in grado di eseguire codice PHP sul server, ma ora penso che PhpStorm esegua solo il codice php se hai configurato un interpnetworking, che non è necessario per il debug. Per il debug, PhpStorm ha solo bisogno della connessione xdebug e dei mapping dei routes corretti.)

Più tardi, ho trovato l'errore "Comando non disponibile" nel registro xdebug sul mio server, che mi ha portto alla soluzione.

Qui, a proposito, è quello che ho nel mio php.ini locale per 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" 

Recentemente ho avuto lo stesso problema nel tentativo di eseguire il debug utilizzando PHPStorm in nginx e php-fpm , nel mio caso questo non era correlato alla xdebug , nginx o php-fpm config , erano le mappature dei routes in phpstorm che mancavano.

Inizialmente PHPStorm ti avviserà quando non può mappare un file sul server a un file sorgente locale, ma se ha una mapping al primo file colpito (normalmente index.php o alcuni di questi) ma non può mappare un file usato in una fase successiva (nel mio caso questo era il caricatore automatico nella directory del venditore di un progetto che utilizzava compositore), quindi PHPStorm non sarà in grado di eseguire il debug di ulteriori e il debug si interromperà.

Per rettificare questo in PHPStorm vai su settings/Languages & Frameworks/PHP/Servers e assicurati che la root del tuo progetto sia mappata correttamente alla sua directory controparte sul server.

PHPStorm dovrebbe quindi essere in grado di mappare tutti i file nel progetto e il debug dovrebbe continuare.

Spero che aiuti.

Per chiunque altro venga a questo problema, esiste un'altra potenziale opzione di configuration che potrebbe mancare.

Assicurati di aver configurato correttamente il tuo server in modo da utilizzare la mapping del path corretta tra i tuoi file locali e remoti.

Ad esempio, se la root del tuo sito è montata localmente su /home/foo/www/mysite ma è installata sul server in /www/mysite , dovrai modificare la configuration del tuo server in PHPStorm per utilizzare i mapping dei routes (inserisci semplicemente /www/mysite nella casella a fianco di /home/foo/www/mysite ).

Il debug di un file denominato « test.php » in IntelliJ IDEA / PhpStorm può portre al fallimento di « Imansible valutare l'espressione» isset($_SERVER['PHP_IDE_CONFIG']) ' ».
Usa un altro nome per il file.

Un'altra cosa è assicurarsi di disabilitare qualsiasi firewall che possiedi e che potrebbe bloccare le connessioni remote.

Ho avuto anche questo problema e ho provato each trucco che riuscivo a trovare, ma non funzionava. Per me, il debug funziona la maggior parte del tempo, ma a volte smette di funzionare con il messaggio: "Imansible accettare la connessione Xdebug esterna: imansible valutare l'espressione 'isset ($ _ SERVER [' PHP_IDE_CONFIG '])'"

Così alla fine mi sono reso conto che avevo un errore di compilazione nel mio codice (nome metodo errato – PhpStorm non riport sempre queste cose, alless nella mia configuration). Non appena ho risolto il problema, il debug dell'errore ha iniziato a funzionare di nuovo. Forse questo può aiutare qualcuno a lottare.

Anche se ho ancora problemi con i punti di interruzione che non vengono colpiti, posso lanciare un "xdebug_break ();" linea nel codice e il debug diventa più affidabile. Il rovescio della medaglia con l'uso di xdebug_break invece dei punti di interruzione è (a parte il fatto che è più lavoro che aggiungere un breakpoint) le variables locali che non vengono visualizzate nel debugger di PhpStorm per qualche ragione (vengono mostrati solo i globals). Ciò rende il debug less conveniente, ma alless posso farlo funzionare.

Apparentemente non puoi avere tutto 🙂 Provenendo dal mondo Java, il debugging è solo qualcosa che sono stato in grado di dare per scontato, ma ora ho realizzato quanto sono stato viziato 🙂