2012-04-01 15 views
22

Ho installato Xdebug e tutto andava bene, fino a quando improvvisamente ha smesso di funzionare. phpinfo() fornisce un buon output XDebug con tutte le variabili.Xdebug ha smesso di funzionare, dove cerco gli errori?

php -m | grep deb 

dà anche due volte XDebug (per Zend e PHP), sembra così di nuovo bene. Il mio php.ini ha queste linee:

zend_extension=/usr/lib/php5/20090626/xdebug.so 
;extension=xdebug.so 
xdebug.remote_host=localhost 
xdebug.remote_enable=on 
xdebug.remote_port=9001 
xdebug.remote_handler=dbgp 
xdebug.remote_connect_back=1 

Eppure, quando si esegue questo codice con dovrebbe verificare XDebug (da docs Netbeans) è semplicemente bloccato. Quindi nessun IDE funziona con XDebug.

<?php 
$address = '127.0.0.1'; 
$port = 9001; 
$sock = socket_create(AF_INET, SOCK_STREAM, 0); 
socket_bind($sock, $address, $port) or die('Unable to bind'); 
socket_listen($sock); 
$client = socket_accept($sock); 
echo "connection established: $client"; 
socket_close($client); 
socket_close($sock); 

Inoltre, secondo l'installazione di XDebug, sono andato due volte attraverso i passaggi. Cosa c'è di sbagliato con la mia configurazione? Grazie.

+0

anche dopo aver aggiunto xdebug.remote_log = "/ tmp/xdebug.log" e riavviato Apache2 ed eseguendo un'app il registro è vuoto ... – valk

risposta

10

Alla fine, sono rimaste solo due soluzioni: per reinstallare il sistema operativo Ubuntu o per installare una nuova macchina virtuale, in particolare per xdebug, sto andando alla seconda. La cosa divertente è che tutto funzionava secondo "RTM" (f = freaking). Una cosa che non riuscivo a capire è come leggere i log per XDebug per capire dove si trova il vero problema.

UPDATE

Dopo un po 'in lotta, ho cancellato ogni singola riga relativa a Xdebug da ogni php.ini che ho avuto. E spostato queste righe in /etc/php5/conf.d/xdebug.ini. Apache riavviato, quindi PHPStorm e funziona. P.S. nel mezzo, ho provato a installare xdebug con pecl, da github e la versione standard di Ubuntu. Penso che quello che ho compilato funzioni attualmente. E ... anche il registro viene aggiornato.

;xdebug configuration 
zend_extension = /usr/lib/php5/20090626/xdebug.so 
xdebug.remote_host = 127.0.0.1 
xdebug.remote_enable = 1 
xdebug.remote_port = 9000 
xdebug.remote_handler = dbgp 
xdebug.remote_mode = req 
xdebug.profiler_enable=0 
xdebug.profiler_enable_trigger=1 
xdebug.remote_autostart=1 
xdebug.idekey=PHPSTORM 
xdebug.remote_log="/tmp/xdebug.log" 
0

porta di controllo non è occupato, NetBeans di controllo è configurato per ascoltare quella porta (Vedo che hai 9001, 9000 è l'impostazione predefinita di solito) anche quando il debug con Eclipse devo "terminare e rilancio" debug sessione di tanto in tanto da quando smette di funzionare, mai capito perché, sospetto una sorta di sessione di debug scaduta

2

Ho avuto questo problema anche su Ubuntu dopo aver aggiornato php. Per me, accendendo gli errori html in php.ini ottenuto xdebug con Netbeans a lavorare di nuovo ...

sudo vi /etc/php5/apache2/php.ini 
display_errors = On 
html_errors = On 

E riavviare apache:

sudo /etc/init.d/apache2 restart 

http://ubuntuforums.org/showpost.php?p=9592364&postcount=14

6

Sul server, provare questo comando:

$ netstat -anp | grep CLOSE_WAIT

Qualsiasi: 9000 voci saranno darti problemi XDebug; considerare kill -9 <pid>.

+0

Per chi non ha completamente familiarità con Linux, il PID su Ubuntu per me che usa questo il comando era l'ultima colonna: 3131/apache2 PID = 3131 – espradley

1

Controllai

netstat -anp uscita

e scoperto che c'erano numero di socket aperti (nella gamma di porta XDebug) di processo master sul mio computer remoto [esecuzione xDebug] .

L'uccisione del processo "master" ha risolto il problema per me.

Sembrava una situazione di superamento del porto per me. Pensavo che l'informazione potesse essere utile ad alcuni.