How can I debug a PHP CLI script with xdebug?

后端 未结 4 590
太阳男子
太阳男子 2020-12-13 02:47

I haven\'t quite figured this out. EVERY piece of documentation I\'ve found covers how to use xdebug to debug scripts running in Apache. I need to debug a php CLI script.

相关标签:
4条回答
  • 2020-12-13 03:06

    simply put the following section to your 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
    

    and replace PHPSTORM with your ide key

    0 讨论(0)
  • 2020-12-13 03:07

    If you're using bash (or similar shell), this little script might come in handy:

    alias drush-debug=drd
    function drd {
        export XDEBUG_CONFIG="idekey=cli_session"
        export SERVER_NAME="developer.machine"
        export SERVER_PORT="9000"
        drush "$@"
        unset XDEBUG_CONFIG
        unset SERVER_NAME
        unset SERVER_PORT
    };
    

    or as suggested by the commentators below

    alias drd='XDEBUG_CONFIG="idekey=PHPSTORM" drush "$@"'
    

    This way you don't have to manually set and unset the trigger variable each time you want to debug.

    0 讨论(0)
  • 2020-12-13 03:10

    For Windows and Visual Studio Code here's how to proceed:

    1. Download xdebug from https://xdebug.org/download. For example php 7.4 Windows 64bit https://xdebug.org/files/php_xdebug-2.9.5-7.4-vc15-nts-x86_64.dll

    2. Copy the xdebug dll to your php extensions dir (ext).

    3. Add to the end of php.ini

        [XDebug]
        zend_extension=php_xdebug-2.9.5-7.4-vc15-nts-x86_64.dll
    
        xdebug.remote_enable=1
        xdebug.remote_autostart=1
    
    1. Open VSCode and install https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug

    2. Open the project workspace in VSCode, go to Run tab, click the cogwheel and add these lines

        {
          "name": "listen CLI",
          "type": "php",
          "request": "launch",
          "port": 9000
        },
        {
          "name": "run CLI",
          "type": "php",
          "request": "launch",
          "program": "${file}",
          "cwd": "${fileDirname}",
          "port": 9000
        }
    
    1. Place a break point in the script you want to debug

    2. Select "run CLI" and click "Start Debugging"

    Happy debugging!

    0 讨论(0)
  • 2020-12-13 03:17

    There is a couple of notes about that in Xdebug's manual, like, for instance (quoting) :

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

    If you are using Eclipse PDT to develop and debug your PHP scripts, there is not much difference between Apache or CLI : the configuration lloks quite the same, you just don't have to configure a web server, nor indicate an URL ; instead, you have to indicate the path to the PHP executable.

    About the XDEBUG_SESSION_START variable : well, you launch the whole script in "debug-mode", so you don't have any notion of "debugging-session", I'd say.


    For instance, here's what Window > Preference > PHP > PHP executables looks like for me right now, and, on the right, what I get when clicking on the Edit button of the first one :


    (source: pascal-martin.fr)
       
    (source: pascal-martin.fr)

    And the debug configurations window :


    (source: pascal-martin.fr)

    And launching the debugging: it just works :


    (source: pascal-martin.fr)


    Hope this helps :-)

    Else, what specific problem do you encounter ?

    0 讨论(0)
提交回复
热议问题