2009-12-22 22 views
22

Non ho ben capito questo. Ogni pezzo di documentazione ho trovato copre come utilizzare xdebug per il debug di script in esecuzione in Apache. Ho bisogno di eseguire il debug di uno script php CLI.Come posso eseguire il debug di uno script CLI PHP con xdebug?

Così, per esempio, come faccio a passare la variabile XDEBUG_SESSION_START dentro per ottenere xdebug a calci in?

Sono in particolare cercando di eseguire il debug di un guscio di CakePHP. Quindi se qualcuno ha ulteriori informazioni in merito sarei molto riconoscente.

Grazie.

+0

Si potrebbe anche voler guardare qui: http: // StackOverflow.it/questions/2288612/how-to-trigger-xdebug-per-a-riga-comando-script-php – selfawaresoup

risposta

36

C'è un paio di note su che nel Xdebug's manual, come, per esempio, (citando):

export XDEBUG_CONFIG="idekey=session_name" 
php myscript.php 

Se si utilizza Eclipse PDT per sviluppare ed eseguire il debug degli script PHP, non c'è molta differenza tra Apache o CLI: le lloks configurazione proprio la stessa cosa, solo che non c'è bisogno di configurare un server web, nè indicare un URL; invece, devi indicare il percorso dell'eseguibile PHP.

Sulla variabile XDEBUG_SESSION_START: beh, si avvia l'intero script in "modalità debug", quindi non si ha alcuna nozione di "debugging-session", direi.


Per esempio, ecco cosa Window > Preference > PHP > PHP executables assomiglia per me in questo momento, e, a destra, che cosa ottengo quando si fa clic sul pulsante Edit del primo:

http://extern.pascal-martin.fr/so/xdebug-cli/1.png     http://extern.pascal-martin.fr/so/xdebug-cli/1-edit.png

E la finestra debug configurations:

http://extern.pascal-martin.fr/so/xdebug-cli/2.png

e il lancio del debug: funziona solo:

http://extern.pascal-martin.fr/so/xdebug-cli/3.png


Spero che questo aiuti :-)

Altrimenti, che cosa problema specifico si incontrano?

8

se si sta usando bash (o shell simile), questo piccolo script potrebbe tornare utile:

alias drush-debug=drd 
function drd { 
    export XDEBUG_CONFIG="idekey=cli_session" 
    export SERVER_NAME="developer.machine" 
    export SERVER_PORT="9000" 
    drush "[email protected]" 
    unset XDEBUG_CONFIG 
    unset SERVER_NAME 
    unset SERVER_PORT 
}; 

o come suggerito dai commentatori di seguito

alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "[email protected]"' 

In questo modo si don' t necessario impostare e disinserire manualmente la variabile trigger ogni volta che si desidera eseguire il debug.

+6

Questo è logicamente equivalente a mettere la variabile d'ambiente sulla stessa riga del comando in bash, ad esempio: "XDEBUG_CONFIG = 'idekey = cli_session' drush $ * ". Non c'è bisogno di una funzione che imposta e quindi disattiva la variabile, la shell esporterà la variabile automaticamente al comando. – Stabledog

+1

@Stabledog Questo, tuttavia, se non sono disinseriti, xDebug sarà abilitato per tutti i successivi comandi drush nella shell corrente, se non sbaglio. L'idea alla base di questa funzione era quella di abilitare temporaneamente il debug della CLI di PHP, ma ha i suoi avvertimenti. – Plamen

+1

@Plamen usa 'drush '$ @" 'al suo posto. bash espanderà ogni argomento con le virgolette in modo che il registro "drush-debug cc" "funzioni". Non è l'aspetto più intuitivo di bash, ma è bello avere. –

2

In poche parole la seguente sezione al vostro php.ini

[XDebug] 
xdebug.max_nesting_level = 200 
xdebug.remote_enable=1 
xdebug.remote_port=9000 
;xdebug.profiler_enable=1 
xdebug.idekey=PHPSTORM 
xdebug.remote_autostart=1 

e sostituire PhpStorm con il vostro IDE chiave

Problemi correlati