【问题标题】:Composer Fatal error: Cannot redeclare composerRequireComposer 致命错误:无法重新声明 composerRequire
【发布时间】:2018-03-12 11:59:18
【问题描述】:

在我的 MacOS 上运行 PHP 开发服务器时,我从 composer 收到以下错误。

Fatal error: Cannot redeclare composerRequire01a3dc0b1f885ed2b645be37711584c1() 
(previously declared in /Users/<user>/Desktop/<app>/vendor/composer/autoload_real.php:63) 
in /Users/<user>/Desktop/<app>/vendor/composer/autoload_real.php on line 70

但是,当在我的 Windows 机器上运行完全相同的代码时,一切似乎都运行得非常好。我已经确认我没有多次包含自动加载的 require 语句。这可能是什么原因造成的?如果这有什么不同,我正在使用 HomeBrew 的 Composer。我只是看不出这样一个特定的文件命名空间是如何被多次包含的。

编辑

作曲家 autoload_real.php

<?php

// autoload_real.php @generated by Composer

class ComposerAutoloaderInit01a3dc0b1f885ed2b645be37711584c1
{
    private static $loader;

    public static function loadClassLoader($class)
    {
        if ('Composer\Autoload\ClassLoader' === $class) {
            require __DIR__ . '/ClassLoader.php';
        }
    }

    public static function getLoader()
    {
        if (null !== self::$loader) {
            return self::$loader;
        }

        spl_autoload_register(array('ComposerAutoloaderInit01a3dc0b1f885ed2b645be37711584c1', 'loadClassLoader'), true, true);
        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
        spl_autoload_unregister(array('ComposerAutoloaderInit01a3dc0b1f885ed2b645be37711584c1', 'loadClassLoader'));

        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
        if ($useStaticLoader) {
            require_once __DIR__ . '/autoload_static.php';

            call_user_func(\Composer\Autoload\ComposerStaticInit01a3dc0b1f885ed2b645be37711584c1::getInitializer($loader));
        } else {
            $map = require __DIR__ . '/autoload_namespaces.php';
            foreach ($map as $namespace => $path) {
                $loader->set($namespace, $path);
            }

            $map = require __DIR__ . '/autoload_psr4.php';
            foreach ($map as $namespace => $path) {
                $loader->setPsr4($namespace, $path);
            }

            $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            }
        }

        $loader->register(true);

        if ($useStaticLoader) {
            $includeFiles = Composer\Autoload\ComposerStaticInit01a3dc0b1f885ed2b645be37711584c1::$files;
        } else {
            $includeFiles = require __DIR__ . '/autoload_files.php';
        }
        foreach ($includeFiles as $fileIdentifier => $file) {
            composerRequire01a3dc0b1f885ed2b645be37711584c1($fileIdentifier, $file);
        }

        return $loader;
    }
}

function composerRequire01a3dc0b1f885ed2b645be37711584c1($fileIdentifier, $file)
{
    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
        require $file;

        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
    }
}

【问题讨论】:

  • 可以把composer生成的/vendor/composer/autoload_real.php贴在这里吗?
  • @Federkun 添加
  • 为什么要使用这些类和函数名称?
  • 这个我没碰过,我只是复制了文件里的内容。我假设 Composer 是自己生成的。

标签: php composer-php slim slim-3


【解决方案1】:

您似乎复制了现有项目目录并尝试在新目录中调整它

尝试删除composer.lockvendor/并运行composer update

我不是 100% 确定,但希望它会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-29
    • 2015-08-29
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多