【问题标题】:How to handle this error on WampServer: Class 'Composer\Autoload\ClassLoader' not found?如何在 WampServer 上处理此错误:找不到类“Composer\Autoload\ClassLoader”?
【发布时间】:2015-10-21 11:50:32
【问题描述】:

我使用 Symfony2 开发了一个网站。不幸的是,该网站在硬盘上被删除,我丢失了所有工作。

但是,由于一个名为“EaseUS Data Recovery Wizard”的文件恢复软件,我已经成功恢复了我的项目源文件夹(位于 Wampserver 的www 文件夹中的那个)。

我已经安装了 Wampserver 2.5,并将我恢复的文件夹放在了 Wampserver 的 www 文件夹中。问题是每当我尝试访问我网站的主页时,我都会看到以下错误消息:

Fatal error: Class 'Composer\Autoload\ClassLoader' not found in C:\wamp\www\Wkayet_project\PFESymfony2\vendor\composer\autoload_real.php on line 23

我真的很想知道为什么我输入了正确的 URL 地址却收到这样的错误消息!所以,我的问题是:我该如何解决这个问题?

这是我拥有的 composer.json 文件的内容:

    {
    "name": "symfony/framework-standard-edition",
    "license": "MIT",
    "type": "project",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "~2.4",
        "doctrine/orm": "~2.2,>=2.2.3",
        "doctrine/doctrine-bundle": "~1.2",
        "twig/extensions": "~1.0",
        "symfony/assetic-bundle": "~2.3",
        "symfony/swiftmailer-bundle": "~2.3",
        "symfony/monolog-bundle": "~2.4",
        "sensio/distribution-bundle": "~2.3",
        "sensio/framework-extra-bundle": "~3.0",
        "sensio/generator-bundle": "~2.3",
        "incenteev/composer-parameter-handler": "~2.0"
    },
    "scripts": {
        "post-install-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "incenteev-parameters": {
            "file": "app/config/parameters.yml"
        },
        "branch-alias": {
            "dev-master": "2.4-dev"
        }
    }
}

编辑2

当我运行这个命令时: composer install ,我会在我的屏幕上看到下面的内容:

[Seld\JsonLint\ParsingException]
"./composer.lock" does not contain valid JSON 
Parse error on line 1:
Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

当我运行这个命令时: composer --version ,我会在我的屏幕上看到下面的内容:

Composer version 1.0-dev <f85d965732d9505b69242a070dc0b381c9f6bbab> 2015-10-19 10:04:38

当我运行这个命令时: composer diagnostic ,我会在我的屏幕上看到下面的内容:

Checking composer.json: FAIL
Defining autoload.psr-0 with an empty namespace prefix is a bad idea for performance
Checking platform settings: FAIL
The xdebug extention is loaded, this can slow down Composer a little.
Disabling it when using Composer is recommended.
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking composer version: OK

【问题讨论】:

  • 也许你需要运行 composer install 来重新创建自动加载文件
  • 另外,你能告诉我们你的composer.json吗?
  • @CarlosGranados:我在从以下链接下载 Composer-Setup.exe 后运行了 composer install:getcomposer.org/download。但是,我仍然看到相同的错误消息!
  • @TomášVotruba:我添加了我的问题中的 composer.json 文件的内容。您可以在我添加的编辑部分中查看。提前致谢。
  • 请运行这 3 个命令并用结果更新您的问题。 1: composer install ; 2:composer --version 3:composer diagnose

标签: php symfony composer-php


【解决方案1】:

基于此输出:

[Seld\JsonLint\ParsingException]
"./composer.lock" does not contain valid JSON 
Parse error on line 1:
Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

您的 composer.lock 文件中似乎有一些语法错误,这会阻止 composer install 成功结束并生成自动加载文件。

简单的解决方法是删除composer.lock 文件,然后在控制台中再次运行composer install。这将根据您在composer.json 中的配置生成一个具有最新依赖项的新锁定文件

更安全的修复 至少如果您确实需要 composer.lock 中的确切依赖项,则可以在此处打开语法错误修复程序。 如果您需要帮助,请在此处发布内容。

还可能需要通过运行php app/console cache:clear 或手动删除/app/cache/* 中的缓存文件来清除缓存

【讨论】:

  • 好吧,我删除了 composer.lock 文件然后我运行了composer.lock,但我收到了这个错误信息:ContextErrorException: Notice: unserialize(): Error at offset 0 of 20109 bytes in C:\ wamp\www\Wkayet_project\PFESymfony2\vendor\symfony\symfony\src\Symfony\Component\ClassLoader\ClassCollectionLoader.php 第 71 行
  • 你知道如何解决这个问题吗?
  • @Nadim2014 你删除了composer.LOCK 并运行composer.LOCK?我在删除锁定文件后写了你应该运行composer INSTALL
  • 对不起,我的意思是我删除了 composer.lock 文件然后我运行了composer install(这只是我在输入评论时犯了一个输入错误:))
  • @Nadim2014 运行 composer install 或尝试重新加载页面后出现反序列化错误?作曲家安装的输出是什么。并尝试清除可以修复该错误的缓存。编辑了我的答案缓存清除
【解决方案2】:

我刚刚删除了vendor文件夹下除了autoload.php文件之外的所有文件夹,然后在我的项目文件夹下我运行了这个命令:

composer update

它成功了。

【讨论】:

  • 您本可以删除 vendor 目录中的所有内容,因此保留 autoload.php 并没有多大作用(也无害,因为它可能会被更新覆盖) .最有可能的修复是运行更新,因为这会生成一个新的composer.lock。请注意,您的所有依赖项现在都已更新,理论上可能已经引入了重大更改,因此请仔细检查您的应用程序。 composer.lock 正是出于这个原因,以确保您始终可以部署应用程序的已知工作状态。
  • @k0pernikus:好的,我会记住这一点,无论如何我都会尝试我的应用程序。
猜你喜欢
  • 2018-12-28
  • 2014-07-30
  • 1970-01-01
  • 2016-01-10
  • 2020-09-15
  • 2017-07-24
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
相关资源
最近更新 更多