错误:无法重新声明__autoload()

时间:2014-10-07 19:16:53

标签: php symfony composer-php multimedia getid3

我正在使用Symfony,目前正在尝试使用getId3:https://github.com/phansys/GetId3

我是通过提供的链接中提到的composer安装的。安装成功。

在我想要使用它的文件中,我有以下内容:

<?php
    use GetId3_GetId3 as GetId3;

    ...

    $this->getId3 = new GetId3;


    $fileInfo = $this->getId3->analyze($media->getBinaryContent()->getRealPath());

我得到的错误如下:

FatalErrorException: Error: Cannot redeclare __autoload() (previously declared in /Users/etienne/Developpement/Ima-Tech/Clients/osc/vendor/phansys/getid3/GetId3/GetId3.php:69) in /Users/etienne/Developpement/Ima-Tech/Clients/osc/vendor/phansys/getid3/GetId3/GetId3.php line 69

错误堆栈:

in /Users/etienne/Developpement/Ima-Tech/Clients/osc/vendor/phansys/getid3/GetId3/GetId3.php line 69
at ErrorHandler->handleFatalError() in /Users/etienne/Developpement/Ima-Tech/Clients/osc/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php line 219
at ErrorHandler->handleFatal() in /Users/etienne/Developpement/Ima-Tech/Clients/osc/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php line 0
at GetId3_GetId3->__construct() in /Users/etienne/Developpement/Ima-Tech/Clients/osc/vendor/phansys/getid3/GetId3/Module/AudioVideo/Quicktime.php line 94
at GetId3_Module_AudioVideo_Quicktime->Analyze() in /Users/etienne/Developpement/Ima-Tech/Clients/osc/vendor/phansys/getid3/GetId3/GetId3.php line 471
at GetId3_GetId3->analyze() in /Users/etienne/Developpement/Ima-Tech/Clients/osc/src/Application/Sonata/MediaBundle/Provider/VideoProvider.php line 70

1 个答案:

答案 0 :(得分:2)

您使用的是旧的,过时的和有缺陷的版本,您可以通过使用该库来查看。

至少使用此软件包的2.0.0版本,而不是1.x版本。 (这意味着您必须使用开发版本,因为版本2.0或2.1都没有被标记)。这将引入该库的命名空间版本,因为它不会尝试初始化它自己的内部自动加载。

所有1.x版本都被破坏了,因为多次实例化GetId3对象会尝试每次都添加__autoload()函数 - 而第二次是一次太多。