Xdebug laravel artisan commands

15,480

Solution 1

According to xdebug.remote_connect_back documentation it's using $_SERVER['REMOTE_ADDR'] to get debugging host. I guess that in CLI you must use xdebug.remote_host instead.

Solution 2

Maybe this will help someone.

In short I had the same problem but I didn't have luck with accepted answer. My solution is to run this from the command line:

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=on -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 artisan my:command

Solution 3

If you're using XDebug version 3, try:

php -dxdebug.mode=debug -dxdebug.client_host=host.docker.internal -dxdebug.client_port=9003 -dxdebug.start_with_request=yes artisan your:command

Solution 4

If you use vagrant, than you can create artisandebug shell file.

#!/bin/bash
HOST=10.0.2.2

# xdebug 3
php -dxdebug.mode=debug -dxdebug.start_with_request=yes -dxdebug.client_host=$HOST -dxdebug.client_port=9003 artisan  "$@"

# xdebug < 3
# php -dxdebug.remote_autostart=on -dxdebug.remote_connect_back=off -dxdebug.remote_host=$HOST -dxdebug.client_port=9003 artisan  "$@"

Than make it executable and run command :

chmod +x artisandebug

./artisandebug some:command --there

Solution 5

I got it working with remote_autostart=1 and setting the PHP_IDE_CONFIG environment variable to "serverName=localhost". localhost is the name of your server config in PHPStorm. Now when I run php artisan I can break at the regular breakpoints.

Let me be more clear :)

If you've got xdebug working with PHPStorm and regular requests this is what you should do to get it working with command line php (artisan).

You have configured paths in PHPStorm so it knows which file it should show you with the breakpoints. These paths are configured under a server (Preferences -> Languages & Frameworks -> PHP -> Servers).

The name of this server should be the serverName value in the PHP_IDE_CONFIG environment variable.

Share:
15,480

Related videos on Youtube

James Kirkby
Author by

James Kirkby

Updated on December 02, 2021

Comments

  • James Kirkby
    James Kirkby over 2 years

    I regularly use xdebug to debug applications, I've built a laravel application that takes an upload of a csv inserts the data to the database and the ids to a job queue.

    I've written an artisan command to be run via cron to then do something with this data.

    Xdebug works for accessing the site via the browser, but its not breaking on breakpoints when ran from cli.

    I run php5-fpm. My files /etc/php5/fpm/php.ini and /etc/php5/cli/php/ini both contain the following settings:

    zend_extension=/usr/lib/php5/20121212/xdebug.so 
    xdebug.remote_enable = 1 
    xdebug.idekey = 'dev_docker' 
    xdebug.remote_autostart = 1 
    xdebug.remote_connect_back = {{my host ip}} 
    xdebug.remote_port = 9000 
    xdebug.remote_handler=dbgp
    

    I then run the artisan command

    php artisan jobqueue::process --batch-size=10 --sleep=10
    

    I know the command is running as ->info('text') is displayed in the terminal

    Anyone know what I'm missing?

  • Ryan
    Ryan almost 7 years
    This didn't work for me. Netbeans still just says "running" and didn't stop at the marked line.
  • Dragas
    Dragas about 6 years
    You should add dxdebug.remote_autostart=on
  • Ryan
    Ryan over 5 years
    Hi Boroboris, could you please see if you could answer this related one? stackoverflow.com/questions/54711818/…
  • jayarjo
    jayarjo almost 5 years
    This should be marked as correct answer. xdebug.remote_autostart=on was the one.
  • MarijnK
    MarijnK over 4 years
    This worked for me on Windows (XAMPP) but I had to format the command with a space after each -d option for it to work: php -d xdebug.remote_enable=1 -d xdebug.remote_autostart=on -d xdebug.remote_mode=req -d xdebug.remote_port=9001 -d xdebug.remote_host=127.0.0.1 -f artisan my:command
  • Nickson Yap
    Nickson Yap about 4 years
    If using docker: -dxdebug.remote_host=host.docker.internal
  • Hilman Nihri
    Hilman Nihri almost 3 years
    finally! I was using the right xdebug config but xdebug always fail. The issue was I need to set the server config in phpstorm with the right port and xdebug is running.
  • Nico Haase
    Nico Haase over 2 years
    Please add some explanation to your answer such that others can learn from it
  • Johan Fredrik Varen
    Johan Fredrik Varen over 2 years
    This was all I needed: php -dxdebug.mode=debug -dxdebug.start_with_request=yes artisan my:command