1

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

我通过提供的链接中提到的作曲家安装了它。安装成功。

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

<?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
4

1 回答 1

2

您正在使用一个旧的、过时的和有缺陷的版本,这可以从您对该库的使用中看出。

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

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

于 2014-10-07T20:37:46.830 回答