【问题标题】:Composer error when installing alipay dependency安装支付宝依赖时 Composer 错误
【发布时间】:2022-08-15 06:31:34
【问题描述】:

对于我当前的作曲家项目,我需要使用这些依赖项:

\"lokielse/omnipay-alipay\" : \"dev-master\",
\"lokielse/omnipay-wechatpay\" : \"dev-master\"

但是当我运行命令时:

composer update --with-all-dependencies

我收到此错误消息:

Could not scan for classes inside \"vendor/alipay\" which does not appear to be a file nor a folder

知道我该如何解决吗?谢谢。

更新1:这是有关该问题的一些附加信息。

  1. 我在vendor文件夹里面检查了,非支付宝文件夹被创建了。
  2. 这是原来的composer.json文件内容:
    {
      \"name\" : \"muvizuworld\",
      \"description\" : \"The Laravel Framework.\",
      \"require\" : {
        \"php\" : \"^7.3|^8.0\",
        \"ext-curl\" : \"*\",
        \"ext-json\" : \"*\",
        \"alibabacloud/sdk\" : \"^1.8\",
        \"darkaonline/l5-swagger\" : \"^8.0\",
        \"dcat/laravel-admin\" : \"2.*\",
        \"fideloper/proxy\" : \"^4.4\",
        \"fruitcake/laravel-cors\" : \"^2.0\",
        \"genealabs/laravel-model-caching\" : \"^0.11.1\",
        \"guzzlehttp/guzzle\" : \"^7.0.1\",
        \"hhxsv5/laravel-s\" : \"^3.7\",
        \"iidestiny/laravel-filesystem-oss\" : \"^2.1\",
        \"laravel/framework\" : \"^8.12\",
        \"laravel/horizon\" : \"^5.7\",
        \"laravel/tinker\" : \"^2.5\",
        \"lcobucci/jwt\" : \"3.3.3\",
        \"overtrue/laravel-wechat\" : \"^6.0\",
        \"predis/predis\" : \"^1.1\",
        \"simplesoftwareio/simple-qrcode\" : \"^4.1\",
        \"tymon/jwt-auth\" : \"^1.0\",
        \"xuxiaoyang/laravel-model-trait\" : \"^1.0\",
        \"ignited/laravel-omnipay\" : \"2.*\",
        \"lokielse/omnipay-alipay\" : \"dev-master\",
        \"lokielse/omnipay-wechatpay\" : \"dev-master\",
        \"ext-zip\" : \"*\"
      },
      \"require-dev\" : {
        \"barryvdh/laravel-ide-helper\" : \"^2.8\",
        \"beyondcode/laravel-dump-server\" : \"^1.7\",
        \"beyondcode/laravel-query-detector\" : \"^1.4\",
        \"codedungeon/phpunit-result-printer\" : \"^0.30.0\",
        \"facade/ignition\" : \"^2.5\",
        \"fakerphp/faker\" : \"^1.9.1\",
        \"mockery/mockery\" : \"^1.4.2\",
        \"nunomaduro/collision\" : \"^5.0\",
        \"phpunit/phpunit\" : \"^9.3.3\"
      },
      \"scripts\" : {
        \"post-autoload-dump\" : [ \"Illuminate\\\\Foundation\\\\ComposerScripts::postAutoloadDump\", \"@php artisan package:discover --ansi\" ],
        \"post-root-package-install\" : [ \"@php -r \\\"file_exists(\'.env\') || copy(\'.env.example\', \'.env\');\\\"\" ],
        \"post-create-project-cmd\" : [ \"@php artisan key:generate --ansi\" ],
        \"ide\" : [ \"@php artisan ide-helper:generate\", \"@php artisan ide-helper:meta\", \"@php artisan ide-helper:model --write\" ],
        \"clear\" : [ \"@php artisan cache:clear\", \"@php artisan config:cache\" ]
      },
      \"autoload-dev\" : {
        \"psr-4\" : {
          \"Tests\\\\\" : \"tests/\"
        }
      },
      \"keywords\" : [ \"framework\", \"laravel\" ],
      \"minimum-stability\" : \"dev\",
      \"prefer-stable\" : true,
      \"extra\" : {
        \"laravel\" : {
          \"dont-discover\" : [ ]
        }
      },
      \"autoload\" : {
        \"classmap\" : [ \"vendor/alipay\" ],
        \"psr-4\" : {
          \"App\\\\\" : \"app/\",
          \"Database\\\\Factories\\\\\" : \"database/factories/\",
          \"Database\\\\Seeders\\\\\" : \"database/seeders/\"
        },
        \"files\" : [ \"bootstrap/helpers.php\" ]
      },
      \"config\" : {
        \"optimize-autoloader\" : true,
        \"preferred-install\" : \"dist\",
        \"sort-packages\" : true,
        \"allow-plugins\" : {
          \"easywechat-composer/easywechat-composer\" : false
        }
      },
      \"license\" : \"MIT\",
      \"type\" : \"project\"
    }
    

    更新 2:在我删除线之后

    \"classmap\" : [ \"vendor/alipay\" ]
    

    错误输出更改:

    Loading composer repositories with package information
    Info from https://repo.packagist.org: #StandWithUkraine
    Updating dependencies
    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - php-http/guzzle6-adapter v0.1.0 requires guzzlehttp/guzzle ~6.0 -> found guzzlehttp/guzzle[6.0.0, ..., 6.5.x-dev] but it conflicts with your root composer.json require (^7.0.1).
        - php-http/guzzle6-adapter[v0.2.0, ..., v0.2.1] require php-http/client-tools ^0.1 -> could not be found in any version, there may be a typo in the package name.
        - php-http/guzzle6-adapter[dev-master, v0.3.0, ..., v0.4.1, v1.0.0, ..., v1.1.1, v2.0.0, ..., 2.x-dev] require guzzlehttp/guzzle ^6.0 -> found guzzlehttp/guzzle[6.0.0, ..., 6.5.x-dev] but it conflicts with your root composer.json require (^7.0.1).
        - lokielse/omnipay-wechatpay dev-master requires php-http/guzzle6-adapter * -> satisfiable by php-http/guzzle6-adapter[dev-master, v0.1.0, ..., v0.4.1, v1.0.0, v1.1.0, v1.1.1, v2.0.0, v2.0.1, v2.0.2, 2.x-dev].
        - Root composer.json requires lokielse/omnipay-wechatpay dev-master -> satisfiable by lokielse/omnipay-wechatpay[dev-master].
    
    Potential causes:
     - A typo in the package name
     - The package is not available in a stable-enough version according to your minimum-stability setting
       see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
     - It\'s a private package and you forgot to add a custom repository to find it
    
    Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
    

    更新 3:我认为与您分享的一些信息很重要:

    1. 我正在处理的项目是由另一个我不再联系的开发人员制作的遗留应用程序。所以,我现在的目标是让应用程序的本地/功能副本运行。目前,有一个带有此代码的生产站点,所以据说它可以工作。
    2. 如果我不删除更新 2 中提到的 \"classmap\" 行,则不会发生任何变化,并且我一直停留在第一条错误消息中。
    3. 对于新的错误信息,我注意到依赖版本之间存在冲突:php-http/guzzle6-adapter 需要 guzzlehttp/guzzle 的版本,但 composer.json 文件要求更高的版本。正如我之前提到的,我没有创建这个 .json 文件,我只是让它工作,所以我尝试降级 guzzlehttp/guzzle 包的版本以避免冲突,但随后我收到了新的错误消息。所以,不知道有没有什么策略可以从头重新构建composer.json文件,这样我就可以一一添加正确的依赖了?你有什么可以建议我从头开始的策略吗?谢谢。
  • 你看过this的问题吗?您可能应该删除供应商文件夹并重新安装。
  • 是的,我试过了。我删除了供应商文件夹,结果完全相同,如果我运行 \"composer install\" 或 \"composer update\"。
  • 请分享更多详细信息,例如完整的composer.json,它可以帮助其他人重现问题。另外,请记住,这两个项目已经好几个月没有看到任何更新了。也许这些软件包有问题?
  • 除了迄今为止在 cmets 中的所有好的建议之外,我要做的第一件事是展示您的项目中实际的 vendor/alipay 是什么。该消息只是 Composer 告诉您发生了什么,但它来自实用程序方面。如果您不喜欢实用程序调用的结果,则需要阅读此诊断消息并咨询您的项目/系统,以使用迄今为止您需要了解的尽可能多的信息来丰富它,以更改您的项目/系统配置以便可以成功调用该实用程序。如果 Composer 能够提供更多信息,它已经可以了。
  • 请加全部通过编辑来澄清您的问题。不要链接到外部资源。另外,您是否检查了composer.json 中的\"classmap\" : [ \"vendor/alipay\" ], 做了什么?如果该文件或文件夹不存在,为什么不删除该行?

标签: php composer-php alipay


【解决方案1】:

知道我该如何解决吗?

您描述的错误是 Composer 转储自动加载器时出现的错误。

这是一个非常基本的操作,默认情况下会在每次 composer install 和 composer update 时发生。

从错误消息中也相对容易找到它:

无法扫描“vendor/alipay”中的类,这似乎不是文件也不是文件夹[由我格式化]

它已经告诉你两件重要的事情:

  1. Composer 正在扫描类。这是为了创建一个所谓的类图.
  2. Composer 遇到问题的路径:vendor/alipay

    从 Composer 项目配置中删除错误的自动加载配置,错误消息就会消失。


    因为之后你有依赖问题,你必须解决它们。由于这些都是陈旧的,没有什么好说的,除了你必须解决它们(特别是因为以前的开发人员没有更多的帮助,现在是你必须解决它们,是的,你)。

    之后或在这两者之间,您甚至可能会了解为什么那里有这个类图会给您带来原始错误。

    之前形式的配置显然被破坏了。也许如果您可以恢复曾经工作的 composer.lock 修订版,它可能会再次安装,但这只是一个提示,不知道这是否是项目的远程选项。

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 2014-09-18
    • 2014-07-31
    • 2017-06-28
    • 2016-02-25
    • 2015-01-24
    • 2015-10-27
    • 2018-07-18
    相关资源
    最近更新 更多