Xdebug laravel artisan 命令
Xdebug laravel artisan commands
我经常使用 xdebug 来调试应用程序,我构建了一个 laravel 应用程序,它上传一个 csv,将数据插入数据库,并将 ID 插入作业队列。
我已经通过 cron 编写了一个 artisan 命令 运行 然后用这些数据做一些事情。
Xdebug 可以通过浏览器访问站点,但是当从 cli 运行 时它不会在断点处中断。
我运行php5-fpm。我的文件 /etc/php5/fpm/php.ini
和 /etc/php5/cli/php/ini
两者都包含以下设置:
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
我然后 运行 artisan 命令
php artisan jobqueue::process --batch-size=10 --sleep=10
我知道命令是 运行ning 因为 ->info('text') 显示在终端
有人知道我错过了什么吗?
改为根据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。
也许这会对某人有所帮助。
简而言之,我遇到了同样的问题,但我没有幸运地接受答案。我的解决方案是 运行 从命令行执行此操作:
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
我使用 remote_autostart=1 并将 PHP_IDE_CONFIG 环境变量设置为 "serverName=localhost"。 localhost 是您在 PHPStorm 中的服务器配置名称。
现在当我 运行 php artisan 我可以在常规断点处中断。
让我说得更清楚:)
如果你有 xdebug 使用 PHPStorm 和常规请求,这是你应该做的让它使用命令行 php (artisan).
您已在 PHPStorm 中配置路径,因此它知道应该向您显示哪个文件和断点。这些路径在服务器下配置(首选项 -> 语言和框架 -> PHP -> 服务器)。
此服务器的名称应该是 PHP_IDE_CONFIG 环境变量中的 serverName 值。
如果您使用的是 XDebug 版本 3,请尝试:
php -dxdebug.mode=debug -dxdebug.client_host=host.docker.internal -dxdebug.client_port=9003 -dxdebug.start_with_request=yes artisan your:command
如果你使用 vagrant,那么你可以创建 artisandebug
shell 文件。
#!/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 "$@"
比使其可执行和 运行 命令:
chmod +x artisandebug
./artisandebug some:command --there
用于使用 xdebug 3.1.1 和 docker
进行分析
php
-dxdebug.mode=profile
-dxdebug.client_host=IP_SERVICE_WITH_PHP
-dxdebug.client_port=XDEBUG_CLINT_PORT
-dxdebug.start_with_request=yes
-dxdebug.output_dir=/tmp
artisan ARTISAN_COMMAND
示例
php -dxdebug.mode=profile -dxdebug.client_host=172.19.0.3 -dxdebug.client_port=9003 -dxdebug.start_with_request=yes -dxdebug.output_dir=/tmp artisan help
php -dxdebug.mode=debug -dxdebug.client_host=localhost -dxdebug.client_port=9003 -dxdebug.start_with_request=yes artisan ARTISAN_COMMAND
我经常使用 xdebug 来调试应用程序,我构建了一个 laravel 应用程序,它上传一个 csv,将数据插入数据库,并将 ID 插入作业队列。
我已经通过 cron 编写了一个 artisan 命令 运行 然后用这些数据做一些事情。
Xdebug 可以通过浏览器访问站点,但是当从 cli 运行 时它不会在断点处中断。
我运行php5-fpm。我的文件 /etc/php5/fpm/php.ini
和 /etc/php5/cli/php/ini
两者都包含以下设置:
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
我然后 运行 artisan 命令
php artisan jobqueue::process --batch-size=10 --sleep=10
我知道命令是 运行ning 因为 ->info('text') 显示在终端
有人知道我错过了什么吗?
改为根据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。
也许这会对某人有所帮助。
简而言之,我遇到了同样的问题,但我没有幸运地接受答案。我的解决方案是 运行 从命令行执行此操作:
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
我使用 remote_autostart=1 并将 PHP_IDE_CONFIG 环境变量设置为 "serverName=localhost"。 localhost 是您在 PHPStorm 中的服务器配置名称。 现在当我 运行 php artisan 我可以在常规断点处中断。
让我说得更清楚:)
如果你有 xdebug 使用 PHPStorm 和常规请求,这是你应该做的让它使用命令行 php (artisan).
您已在 PHPStorm 中配置路径,因此它知道应该向您显示哪个文件和断点。这些路径在服务器下配置(首选项 -> 语言和框架 -> PHP -> 服务器)。
此服务器的名称应该是 PHP_IDE_CONFIG 环境变量中的 serverName 值。
如果您使用的是 XDebug 版本 3,请尝试:
php -dxdebug.mode=debug -dxdebug.client_host=host.docker.internal -dxdebug.client_port=9003 -dxdebug.start_with_request=yes artisan your:command
如果你使用 vagrant,那么你可以创建 artisandebug
shell 文件。
#!/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 "$@"
比使其可执行和 运行 命令:
chmod +x artisandebug
./artisandebug some:command --there
用于使用 xdebug 3.1.1 和 docker
进行分析php
-dxdebug.mode=profile
-dxdebug.client_host=IP_SERVICE_WITH_PHP
-dxdebug.client_port=XDEBUG_CLINT_PORT
-dxdebug.start_with_request=yes
-dxdebug.output_dir=/tmp
artisan ARTISAN_COMMAND
示例
php -dxdebug.mode=profile -dxdebug.client_host=172.19.0.3 -dxdebug.client_port=9003 -dxdebug.start_with_request=yes -dxdebug.output_dir=/tmp artisan help
php -dxdebug.mode=debug -dxdebug.client_host=localhost -dxdebug.client_port=9003 -dxdebug.start_with_request=yes artisan ARTISAN_COMMAND