【问题标题】:Error: Cannot redeclare __autoload()错误:无法重新声明 __autoload()
【发布时间】:2014-10-07 19:16:53
【问题描述】:

我正在使用 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

【问题讨论】:

  • 尝试使用require_onceinclude_once,看看是否有帮助,如果您已经在使用require 和/或include。您可能在某处也有它们的副本。
  • 我正在使用 Symfony 和 composer,所以我没有做任何要求或包含。
  • 你用谷歌搜索了错误吗?
  • 是的,不幸的是没有相关的显示。

标签: php symfony composer-php multimedia getid3


【解决方案1】:

您使用的是旧的、过时的和有问题的版本,这可以从您对该库的使用中看出。

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

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

【讨论】:

  • 不,这很糟糕,因为它是 1.x 版本。我看到有一个版本 2.0.0-beta1 被标记,所以你可以使用 ~2.0@beta 作为版本要求。如果在您运行 composer update 时可用,它将自动更新到任何更高版本的 2.x。
猜你喜欢
  • 1970-01-01
  • 2013-10-31
  • 2023-04-02
  • 1970-01-01
  • 2010-12-29
  • 2015-08-29
相关资源
最近更新 更多