3

在 Laravel 7.x 中,我习惯于通过eval(\Psy\sh());输入代码进行交互式调试。升级到 Laravel 8 后,它似乎不再工作了。还有其他方法可以在 Laravel 8 中进行交互式调试吗?

4

2 回答 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 回答