启用xdebug后,我可以重现错误:
composer create-project laravel/laravel
cd laravel
composer require proengsoft/laravel-jsvalidation
php artisan vendor:publish --provider="Proengsoft\JsValidation\JsValidationServiceProvider" --tag=public
错误:
PHP Warning: Uncaught League\Flysystem\Plugin\PluginNotFoundException: Plugin not found for method: read in /tmp/laravel/vendor/league/flysystem/src/Plugin/PluggableTrait.php:49
堆栈追踪:
但是如果没有启用xdebug,一切运行正常。
我想知道在向xdebug报告之前,这种情况是仅发生在我身上还是发生在其他人身上。
php -v
PHP 7.1.15-1+ubuntu16.04.1+deb.sury.org+2
Package: php-xdebug
Version: 2.6.0+2.5.5-1+ubuntu16.04.1+deb.sury.org+1
Composer.lock供参考
https://gist.github.com/amenk/9d63975cf4aabf86288b79fb95e8156c
我在Flysystem中跟踪了以下函数:
public function invokePluginOnFilesystem($method, $arguments, $prefix)
{
$filesystem = $this->getFilesystem($prefix);
try {
return $this->invokePlugin($method, $arguments, $filesystem);
} catch (PluginNotFoundException $e) {
// Let it pass, it's ok, don't panic.
}
$callback = [$filesystem, $method];
return call_user_func_array($callback, $arguments);
}
在invokePlugin()中抛出异常,但是在postwars(如果xdebug关闭)时捕获了异常。 Xdebug开启了,不再适用了。
我已经为PHP-CLI设置了1G内存限制。
答案 0 :(得分:2)
这不是一个真正的问题,而是一个错误报告。由于异常,我可以很容易地重现各种各样的不稳定因素。请在https://bugs.xdebug.org提交错误报告 - 最好使用更小的测试用例
答案 1 :(得分:0)
更多信息/快速修复:
我正在使用
xdebug.collect_params = 4
与
xdebug.collect_params = 1
错误没有出现。
此错误仅在更新到PHP 7.1.15后出现 - 并且不会出现在PHP 7.2中
还有关于文档中的大型脚本的警告:
https://xdebug.org/docs/all_settings
该设置默认为0,因为它可能使用非常大的脚本 巨大的内存,因此使巨大的不可能 要运行的脚本。您可以最安全地打开此设置,但您可以 期望在有很多函数调用的脚本中出现一些问题和/或 巨大的数据结构作为参数。 Xdebug 2不会有这个 内存使用量增加的问题,因为它永远不会存储它 记忆中的信息。相反,它只会被写入磁盘。这个 意味着您需要查看磁盘使用情况。