Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有接口的PHP7类型错误_Php_Symfony - Fatal编程技术网

带有接口的PHP7类型错误

带有接口的PHP7类型错误,php,symfony,Php,Symfony,在我的symfony项目中,我遇到了一个供应商的错误 致命错误:Uncaught Symfony\Component\Debug\Exception\fatalthrowable错误:类型错误:传递给eZ\Publish\Core\MVC\Legacy\Kernel\Loader::setCLIHandler()的参数1必须实现接口ezpKernelHandler,给定的eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler实例,在/Users/steve/Pr

在我的symfony项目中,我遇到了一个供应商的错误

致命错误:Uncaught Symfony\Component\Debug\Exception\fatalthrowable错误:类型错误:传递给eZ\Publish\Core\MVC\Legacy\Kernel\Loader::setCLIHandler()的参数1必须实现接口ezpKernelHandler,给定的eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler实例,在/Users/steve/Projects/Web/BuildSuccess/www/vendor/ezsystems/legacy bridge/mvc/Kernel/Loader.php的第237行调用/Users/steve/Projects/Web/BuildSuccess/www/vendor/ezsystems/legacy bridge/mvc/Kernel/Loader.php:255

但是这个错误很奇怪,因为我检查了eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler,并实现了接口ezpKernelHandler

namespace eZ\Publish\Core\MVC\Legacy\Kernel;

use ezpKernelHandler;

class CLIHandler implements ezpKernelHandler
{
   ...
}
我尝试过调试,使用get\u class方法,我得到了

"eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler"
array(0) {
}
我还使用了class_实现了方法,我得到了

"eZ\Publish\Core\MVC\Legacy\Kernel\CLIHandler"
array(0) {
}
知道是什么吗


谢谢

我知道这不是你的代码,而是它本身。因此,您不太可能更新源代码,但您仍然可以做一些事情:

  • 检查Composer autoloader配置以查看
    ezpKernelHandler
    类是否正确解析。您可能需要为其注册自定义自动加载器

  • 您很可能收到此错误,因为您正在使用Symfony 3.3+及其最近添加的功能。通过禁用受影响服务的服务自动配置,可以避免抛出此错误,请看一个示例

  • 由于此错误是致命的,但可以捕获-如果没有其他任何帮助,您可以为此特定服务创建自己的服务工厂,并捕获其中的错误

  • 固定的:

    通过创建app/autoload.php文件,该文件需要vendor/autoload.php和ezpublish_legacy/autoload.php,并将bin/console更改为需要该文件,而不是vendor/autoload.php,可以轻松修复此问题


    由于
    ezpKernelHandler
    没有名称空间-它可能应该被引用为
    \ezpKernelHandler
    ,我试图添加\但得到了与CLIHandler相同名称空间中的接口ezpKernelHandler相同的错误?我试图禁用autowire和autoconfigure,但得到了相同的错误。你能解释一下怎么做吗?在哪里检查composer自动加载程序配置?我应该看到什么?如何为ezpKernelHandler注册自定义自动加载器?感谢您可以使用
    composer dump autoload-o
    创建优化的类加载器,然后您可以检查
    vendor/composer/autoload_classmap.php
    -它将包含所有已知类的列表以及它们的路径。检查路径是否正确。可以使用函数创建和注册自定义自动加载器。