Controllare se xdebug è lavoro

Senza l’installazione di un editor di testi o un IDE, è possibile verificare se xdebug è lavoro, cioè se è possibile eseguire il debug di codice php?

L’unica parte xdebug arriva nel phpinfo() è il seguente:

Aggiuntivi .ini file analizzato in /etc/php5/apache2/conf.d/mysql.ini,
/etc/php5/apache2/conf.d/mysqli.ini, il file /etc/php5/apache2/conf.d/dop.ini,
/etc/php5/apache2/conf.d/pdo_mysql.ini,
/etc/php5/apache2/conf.d/xdebug.ini

Non è menzionato nel phpinfo() in qualsiasi altro luogo.

  • Non phpinfo() report come una estensione caricate? Che cosa si intende per “lavoro”?
  • Se è visualizzato sul vostro phpinfo() si potrebbe provare a telnet sulla Xdebugs porta (9000 per impostazione predefinita)
  • Ho aggiornato la domanda. Significa che è a carico/funzioni correttamente?
  • Ho aggiornato la domanda. Significa che è a carico/funzioni correttamente?
  • Se l’estensione è effettivamente caricato, dovrebbe avere la sua propria sezione che elenca le direttive di configurazione.
  • xdebug.default_enable=1 era 0 in php.ini nel mio caso.

 

8 Replies
  1. 74

    Senza in realtà fare debug, credo che non si può essere certo che un debugger funziona.

    Ma si può essere abbastanza sicuro — credo che si dovrebbe supporre che se alcuni aspetti di xDebug sono al lavoro quindi tutti possono essere lavora.

    Dato che, si può confermare che xDebug è installato e in luogo cercando le seguenti:

    1) phpinfo() — questo mostrerà tutte le estensioni che vengono caricati, tra cui xDebug. Se c’è, è una scommessa sicura che funziona.

    2) Se questo non è abbastanza buono per voi, si può provare a utilizzare il var_dump() funzione. xDebug modifica l’output di var_dump() per includere ulteriori informazioni. Se questo è a posto, quindi xDebug è lavoro.

    3) xDebug modifica di PHP output di errore. Se il programma si blocca con xDebug potrai ottenere ulteriori informazioni circa il mancato rispetto con standard di PHP crash di uscita.

    4) xDebug aggiunge anche una serie di funzioni di supporto per PHP. Si potrebbe provare uno di questi per vedere se funziona. Per esempio, la funzione xdebug_get_code_coverage() dovrebbe esistere e restituisce un array. Se lo fa, allora xDebug è installato. Se non lo è, non lo è.

    • phpinfo() parla solo di xdebug in Additional .ini files parsed. Verifica il resto dei vostri suggerimenti ora.
    • Appena provato xdebug_get_code_coverage() e ho Fatal error: Call to undefined function xdebug_get_code_coverage() in /var/www/xdebug.php on line 5.
    • sono abbastanza fiera. Che abbastanza conclusivamente ti dice che xdebug non è installato correttamente.
    • Solo una CRONACA, se è il caso, allora si dovrebbe aprire il tuo /etc/php/conf.d/xdebug.ini file, che è quello di cui parla nel supplementare .ini file analizzati e rimuovere tutte le righe. zend_extension=xdebug.so xdebug.remote_enable=on xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.remote_handler=dbgp
    • Penso che mi ha aiutato, perché il mio php.ini è impostato correttamente con il percorso completo, ma in Debian c’è anche un /mods-available directory e che xdebug.impostazione ini era in conflitto (credo) con il mio php.impostazione ini.
  2. 55

    Eseguire

    php -m -c

    nel terminale, e quindi cercare [Zend Modules]. Dovrebbe essere da qualche parte c’è, se viene caricato!

    NB

    Se si sta utilizzando Ubuntu, è possibile che non mostra qui, perché è necessario aggiungere il xdebug impostazioni da /etc/php5/apache2/php.ini in /etc/php5/cli/php.ini. I miei sono

    [xdebug]
    zend_extension = /usr/lib/php5/20121212/xdebug.so
    xdebug.remote_enable=on
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req
    xdebug.remote_host=localhost
    xdebug.remote_port=9000
    • php --version elenca anche con Xdebug se suo carico
    • non funziona per me. Solo dopo aver iniziato la mia macchina, dopo l’Apache è iniziato e di lavoro, php --version mostra Xdebug, ma phpinfo() non mostra un xdebug sezione. E l’esecuzione di script PHP non si ferma a punti di interruzione. Dopo aver eseguito la service apache2 restart, phpinfo() mostra la xdebug sezione e il debug funziona. Così, per qualche motivo, xdebug non viene caricato quando Apache avvia la macchina, il sistema di boot-up. Quindi per ora mi sto divertendo a riavviare Apache dopo ogni avvio.
    • Questo dovrebbe essere accettato risposta
  3. 24

    Provare come di seguito, deve restituire “esiste” o “non esiste”:

    <?php
    echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';
  4. 21

    Dopo un aspro quasi 24 ore di lungo periodo, cercando di fare xdebug di lavoro con Netbeans 8.0.2, ho trovato una soluzione che, spero, sarà lavoro per tutti Ubuntu e Ubuntu relative pile.

    Problema numero 1: PHP e xdebug versioni devono essere compatibili

    A volte, se si sta eseguendo una installazione di Linux e apt-get per installare xdebug, ha vinto ‘ t ottenere il corretto xdebug versione. Nel mio caso, ho avuto l’ultima versione di php, ma un vecchio xdebug versione. Che deve essere a causa della mia attuale versione Xubuntu. Le versioni del Software sono dipendente da repository, che dipende dalla versione del sistema operativo in esecuzione.

    Soluzione: il PHP è un pulito extension manager chiamato dei PECL. Seguire le istruzioni fornite qui per farla funzionare.
    In primo luogo, come sottolineato da un membro per i commenti, si dovrebbe installare PHP developer pacchetto per ottenere PECL di lavoro:

    sudo apt-get install php5-dev

    Quindi, utilizzando PECL, sarete in grado di installare l’ultima versione stabile di xdebug:

    sudo pecl install php5-xdebug

    Una volta che lo fai, la versione corretta di xdebug verrà installato ma non è pronto per l’uso. Dopo di che, è necessario attivarlo. Ho visto molti suggerimenti su come farlo, ma il fatto della questione è che PHP ha bisogno di alcuni moduli per essere abilitati sia per il client e il server, in questo caso Apache. Sembra che la pratica migliore qui è quello di utilizzare il costruito nel metodo di attivazione di moduli chiamati php5enmod. L’utilizzo è descritto qui.

    Problema numero 2: Abilitare il modulo correttamente

    In primo luogo, avrete bisogno di andare in /etc/php5 cartella. Lì, troverete 3 cartelle, apache2, cli, e mods_available. Il mods_available cartella contiene i file di testo con le istruzioni per attivare un determinato modulo. Il nome di convenzione è [modulo].ini. Prendere uno sguardo all’interno di alcuni di loro, vedere come sono impostati.

    Ora dovrete creare il tuo file ini all’interno mods_available cartella. Creare un file denominato xdebug.ini, e all’interno del file, incolla questo:

    [xdebug]
    zend_extension = /usr/lib/php5/20121212/xdebug.so
    xdebug.remote_enable=on
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req
    xdebug.remote_host=localhost
    xdebug.remote_port=9000

    Assicurarsi che la direttiva [xdebug] è presente, esattamente come nell’esempio precedente. È imperativo che il modulo per il lavoro. Infatti, basta copiare e incollare tutto il codice, sarai più felice in quel modo. 😀

    Nota: il zend_extension percorso è molto importante. In questo esempio è di puntamento o la versione corrente del motore PHP, ma si deve prima andare in /usr/lib/php5 e assicurarsi che la cartella denominata con i numeri è quello corretto. Modificare il nome a tutto ciò che si vede lì, e mentre ci sei, all’interno della cartella per verificare che il xdebug.così c’è davvero. Dovrebbe essere, se avete fatto tutto giusto.

    Ora, con il xdebug.ini creato, è il momento di attivare il modulo. Per fare questo, aprire una console e digitare:

    php5enmod xdebug

    Se tutto è andato bene, PHP creato due link a questo file all’interno di /etc/php5/apache2/conf.d e altri all’interno di /etc/php5/cli/conf.d

    Riavviare il server Apache e digitare in console:

    php -v

    Si dovrebbe ottenere qualcosa di simile a questo:

    PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11) 
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans

    Il che significa che il PHP cliente ha letto il tuo xdebug.ini file e caricato il xdebug.quindi, modulo. Finora tutto bene.

    Ora creare un phpinfo script da qualche parte sul vostro web server, ed eseguirlo. Questo è ciò che si dovrebbe vedere, se tutto è andato wright:

    Controllare se xdebug è lavoro

    Se vedete questo, Apache anche caricato il modulo, e probabilmente pronto ad andare. Ora vediamo se Netbeans debug correttamente. Creare uno script molto semplice, aggiungere alcune variabili, dare loro valori, e impostare un punto di interruzione su di loro. Ora premete CTRL+F5, fare clic su “passaggio” sul pannello del debugger, e vedere se si ottiene qualcosa di simile a questo:

    Controllare se xdebug è lavoro

    Ricordati di controllare Netbeans configurazione per il debug, in strumenti/opzioni/php. Dovrebbe essere qualcosa come questo:

    Controllare se xdebug è lavoro

    Spero che questo getta una luce su questo piuttosto oscura, confusa problema.

    Migliori auguri!!!

    • ha funzionato per me, la risposta dovrebbe essere xdebug o netbeans sito probabilmente
    • Ho dovuto installare PHP developer pacchetto per ottenere PECL di lavoro: sudo apt-get install php5-dev.
    • Inoltre, php5enmod non crea alcun link al file ini, funziona perfettamente senza.
    • Ancora una cosa: Il [xdebug] direttiva nel file ini è fondamentale per farlo funzionare. Ero confuso dal fatto che, nel file ini originale, il [xdebug] mancava, ma per me non funziona senza.
    • Ciao! Hai ragione per quanto riguarda l’installazione di PHP developer pacchetto, cercherò di aggiornare il post di conseguenza. Non sono sicuro circa il vostro commento su il php5enmod tu. Crea i collegamenti a cartelle ho specificato. E sì, il [xdebug] direttiva è imperativo, cercherò di aggiornare il post per riflettere questo. Grazie per il feedback!
    • Ho fallito il tentativo di installare xdebug via pecl con messaggio parsePackageName(): "xdebug" is neither a valid version nor a valid state in "php5-xdebug" invalid package name/package file "php5-xdebug" install failed È becaus di MacOS che ho?

  5. 4

    è possibile eseguire questo piccolo php codice

    <?php
    phpinfo();
    ?>

    Copiare l’intera pagina di uscita,
    incolla in questo link. Quindi analizzare. Mostrerà se Xdebug è installato o non è. E darà istruzioni per completare l’installazione.

  6. 2

    Se si utilizza Eclipse quindi siete pregati di notare che durante l’esecuzione in modalità XDebug la costante magica __FILE__, sarà sempre valutata a:

    xdebug://debug-eval

    Quindi la seguente check tornerà vero se la sessione è sotto XDebug:

    $is_xdebug = false !== strpos(__FILE__,'xdebug'); //true while on XDebug
  7. 1

    la tua domanda è detto che il phpinfo dichiarava che apache è stato il caricamento di xdebug di configurazione in /etc/php5/apache2/conf.d/xdebug.ini
    In molte delle istruzioni on-line si può notare che essi chiediamo di mettere xdebug config in php.ini (e che è quello che ho fatto), TUTTAVIA, se la configurazione di /etc/php5/apache2/conf.d/xdebug.ini, allora si dovrebbe rimuovere il [XDebug] impostazioni di configurazione /etc/php5/apache2/php.ini e metterlo in /etc/php5/apache2/conf.d/xdebug.ini INVECE. Una volta che ho rimosso da /etc/php5/apache2/php.ini e mettere in /etc/php5/apache2/conf.d/xdebug.ini invece, e riavviato apache, ha funzionato!!

    Quindi, nel tuo /etc/php5/apache2/conf.d/xdebug.ini, inserire le seguenti:

    [XDebug]
    zend_extension="/usr/lib/php5/20121212+lfs/xdebug.so"
    xdebug.remote_enable=1
    xdebug.remote_port="9000"
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir="/home/paul/tmp"
    
    xdebug.remote_host="localhost"
    xdebug.remote_handler="dbgp";
    xdebug.idekey="phpstorm_xdebug"

    quindi rimuovere questo dal file /etc/php5/apache2/php.ini se lo metti lì.

    Quindi fare:

    sudo service apache2 restart

    Quindi dovrebbe funzionare!!!

  8. 1

    Solo per estendere KsaR risposta e fornire la possibilità di controllo di xdebug da linea di comando:

    php -r "echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';"

Lascia un commento