在 Laravel 7.x 中,我习惯于通过eval(\Psy\sh());
输入代码进行交互式调试。升级到 Laravel 8 后,它似乎不再工作了。还有其他方法可以在 Laravel 8 中进行交互式调试吗?
问问题
343 次
2 回答
0
我在运行 Laravel 时也遇到了同样的问题php artisan serve
。在我运行命令的同一个终端中,PsySH 断点eval(\Psy\sh());
总是自动关闭。
经过一些试验和错误后,我现在能找到的唯一解决方案是通过 Laravel Tinker REPL 使用php artisan tinker
. 因此,在 CLI 中,您可以使用以下代码向您创建的路由发出请求:
// The following '/foo' is the endpoint of the route you created
$request = \Illuminate\Http\Request::create('/foo', 'get');
app()->make(\Illuminate\Contracts\Http\Kernel::class)->handle($request);
然后你可以像往常一样使用 PsySH 进行交互式调试。
于 2021-12-21T09:39:43.670 回答
0
我还没有找到合适的解决方案。所以,问题就在这里。新的artisan serve
方式是创建一个流程,当您尝试使用Psy
它时,它会创建一个新流程。
(standard input):198: 434 ?? 0:11.07 /usr/local/opt/php/sbin/php-fpm --nodaemonize
(standard input):406:80139 ?? 0:00.00 /usr/local/opt/php/sbin/php-fpm --nodaemonize
(standard input):407:80214 ?? 0:00.00 /usr/local/opt/php/sbin/php-fpm --nodaemonize
(standard input):419:79506 ttys000 0:13.80 nvim app/Http/Controllers/UsersController.php
(standard input):422:80288 ttys001 0:00.19 php artisan serve
(standard input):423:80292 ttys001 0:02.66 /usr/local/Cellar/php/8.0.1/bin/php -S 127.0.0.1:8000 /server.php
(standard input):424:80387 ttys001 0:00.00 (php)
(standard input):425:80436 ttys001 0:00.00 (php)
最后两个 PID 是我尝试运行的两个 Psy。
您可以看到我分叉symfony
并将值更改为true
. 这将使您再次像以前一样工作。为了摆脱这个过程,CTRL+D
.
如果版本较低,你可以看看这个
但是,请注意,这可能是只读环境中的问题。
于 2021-01-26T03:05:05.697 回答