2013-02-28 23 views
8

Sto cercando di eseguire il debug remoto un'applicazione web PHP, ma ogni volta cerco di avviare una sessione di debug Eclipse mi inondare con un gruppo di pop-up:XDebug PHP Eclipse - Errore n file appropriato situato o nessun file selezionato

Errore debugger: "Nessun file appropriato trovato o nessun file selezionato. Debug terminato".

enter image description here

Questo è il mio attuale configurazione di Xdebug 2.2.1:

[xdebug] 
xdebug.remote_enable=1 
xdebug.remote_autostart=0 
xdebug.remote_host="localhost" 
xdebug.remote_port=9000 
xdebug.remote_handler="dbgp" 

Questo è il mio Eclipse 4.2.1 configurazione di debug:

enter image description here

Xdebug è installato correttamente, Lo vedo abilitato nell'output di phpinfo().

risposta

7

Ho cercato di eseguire il debug di Eclipse per capire cosa sta succedendo nel mio Mac OS X.
In primo luogo trovare il processo di Eclipse corrente in esecuzione:

$ ps -ef | grep eclipse 
    501 15160 373 0 4:21PM ??   2:57.19 /Users/myuser/apps/eclipse/Eclipse.app/Contents/MacOS/eclipse -psn_0_651423 

Poi tracciare sistema Eclipse chiamate:

$ sudo dtruss -fp 15160 

[... omissis ...] 
accept(0xA0, 0x1224C37E8, 0x1224C37E4)  = 103 0 
setsockopt(0x67, 0xFFFF, 0x1002)  = 0 0 
setsockopt(0x67, 0xFFFF, 0x1001)  = 0 0 
read(0x67, "4\0", 0x1)  = 1 0 
read(0x67, "7\0", 0x1)  = 1 0 
read(0x67, "7\0", 0x1)  = 1 0 
read(0x67, "\0", 0x1)  = 1 0 
read(0x67, "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<init xmlns=\"urn:debugger_protocol_v1\" xmlns:xdebug=\"http://xdebug.org/dbgp/xdebug\" fileuri=\"file:///opt/local/var/db/php5/pear/pear-ini.php\" language=\"PHP\" protocol_version=\"1.0\" appid=\"14961\" idekey=\"ECLIPSE_DB", 0x1DD)   = 477 0 
read(0x67, "\0", 0x1)  = 1 0 
[... omissis ...] 

Qui ho preso la prima riga inviata da xdebug.
È la linea in cui eclissi sta leggendo un pezzo di XML. Suppongo che questa sia la parte DBGp.

<?xml version="1.0" 
     encoding="iso-8859-1"?> 
<init xmlns="urn:debugger_protocol_v1" 
     xmlns:xdebug="http://xdebug.org/dbgp/xdebug" 
     fileuri="file:///opt/local/var/db/php5/pear/pear-ini.php" 
     language="PHP" 
     protocol_version="1.0" 
     appid="14961" 
     idekey="ECLIPSE_DB 

Guardando fileuri ho scoperto Xdebug sta cercando di iniziare la sessione di debug con /opt/local/var/db/php5/pear/pear-ini.php. Il file pear-ini.php non esiste nei miei progetti eclissi.

Così ho creare un nuovo progetto all'interno del mio lavoro di Eclipse e qui ho copiato il file /opt/local/var/db/php5/pear/pear-ini.php

Funziona, Eclipse PDT ora si trova il file che stava cercando e il debugger, infine, avvia correttamente. Mi sta anche chiedendo se mi piacerebbe passare alla prospettiva Debug.

Conclusione
Se ci si imbatte in questo strano errore: "Nessun file appropriato situato o nessun file selezionato", così significa esattamente ciò che è scritto. Ok, il mio Eclipse non è stato in grado di trovare il file, ma significava anche che stava cercando di trovare un file fuori dal suo spazio di lavoro. Può essere un file caricato dal motore PHP per qualche strana ragione. Nel mio caso pear-ini.php viene aggiunto automaticamente dal pear.ini

$ cat pear.ini 
; Do not edit this file; it is automatically generated by MacPorts. 
; Any changes you make will be lost if you upgrade or uninstall php5-pear. 
; To configure PHP, edit /opt/local/etc/php5/php.ini. 
auto_prepend_file = '/opt/local/var/db/php5/pear/pear-ini.php' 
+2

+1 per piacevoli ricerche, i vostri sforzi sono stati apprezzati. – SparKot

+0

Grazie :) Il messaggio di errore è stato davvero fastidioso, anche perché non ha spiegato esattamente cosa c'è che non va. – freedev

+0

Commento eliminato: trovata la soluzione. Grazie mille, molto per aver postato questo !! –

0

Sto usando Linux e allegando il processo usando strace Eclipse (il vero sottoprocesso Java ovviamente) non ero in grado di catturare tali errori.

Per coloro che hanno riscontrato lo stesso problema ma non sono riusciti a risolverlo e se si è effettuato un aggiornamento di Eclipse o PDT non molto tempo fa, provare a eliminare il progetto e ricrearlo.Ha risolto il mio problema in cui il debug di xdebug e la pulizia del progetto Eclipse no.

1

Ho incontrato lo stesso problema e la causa non era pear.ini o pear-ini.php come menzionato sopra.

La ragione era così semplice. Ho installato sia PDT che Aptana PHP Plugin sul mio ambiente Eclipse. Solo passando sia al tipo di progetto che al tipo di configurazione di debug su PDT, tutto ha funzionato bene.

Grazie per aver postato una bella discussione. :)

3

Ho avuto lo stesso problema, e mentre la risposta di freedev mi ha indirizzato nella giusta direzione, in realtà non lo ha risolto.

Utilizzo di dtruss non ha aiutato: non ho visto quell'elemento XML <init> ovunque. Ma sono riuscito a trovarlo una volta impostato xdebug.remote_log=/tmp/xdebug.log in php.ini e quindi aggiunto il file /tmp/xdebug.log mentre tentavo di avviare una sessione di debug remoto. Il /opt/local/var/db/php5/pear/pear-ini.php è stato nuovamente menzionato. Ma I ha il file nel mio filesystem, quindi non ho idea del perché stavo ancora ricevendo questo vago messaggio di errore su un file mancante.

Tuttavia, ora che ho capito che Pera è stato coinvolto nel problema, ho provato semplicemente disinstallare Pera (sudo port uninstall php53-pear), dal momento che non è stato effettivamente usando più. Ed ecco, questo l'ha risolto! Non ricevo più il messaggio di errore "Nessun file appropriato" e riesco a eseguire il debug come al solito.

Con php53 pera disinstallato, l'impostazione fileuri in tali dati XML è ora il file index.php per il sito Drupal che ho provato a eseguire il debug. Quindi sto pensando che dovresti aspettarti che il file di login delle tue richieste web appaia in quell'elemento XML <init>. Vorrei sapere perché avere installato Pear cambia l'attributo fileuri, però. Essere in grado di configurare Pear per smettere di scherzare con Xdebug sarebbe molto meglio che disinstallare Pear.

+2

Grazie per il suggerimento 'debug.remote_log', è una soluzione più semplice e pulita. A proposito, non sono sicuro che tu abbia capito: dovresti creare un nuovo progetto Eclipse e copiare lì pero-ini.php. In altre parole, solo quando pear-ini.php si trova all'interno di un progetto Eclipse dovresti riuscire a eseguire il debug senza questo fastidioso popup. – freedev

+0

Questo è davvero solo un hack che funziona. Quello che sta succedendo qui è che Pear è in qualche modo avvincente con il punto di ingresso di Xdebug. La vera soluzione sarebbe riconfigurare Pear per smettere di farlo. Spero solo di sapere come. – CoreDumpError

0

Se il debugger era abituato a funzionare, ma all'improvviso ha iniziato a lanciare quel messaggio, probabilmente avete appena inserito un segnalibro in un file sorgente che Eclipse non lo vede come parte del progetto o non lo può localizzare affatto.

Ad esempio, mentre eseguo il debug di un plug-in che ho scritto per Wordpress, ho aggiunto dei segnalibri a un file Wordpress esterno che sembra che Eclipse/Xdebug non possa accedere/individuare. Una volta rimosso il segnalibro, tutto torna alla normalità.

Se questo è il caso, è sufficiente rimuovere tutti i segnalibri.