没有不值得去解决的问题,也没有不值得去学习的技术!

基于 Composer 更新 Yii 2 至最新版本后,软件包:guzzlehttp guzzle 的丢失的分析

在一个 Yii 2 版本仍然为:2.0.15.1 的分支中,使用 依赖性检测 depends 命令可以查出已安装在你项目中的某个包,是否正在被其它的包所依赖,并列出他们。得出结论:guzzlehttp/promises 依赖于 guzzlehttp/guzzle,guzzlehttp/guzzle 依赖于 codeception/base,codeception/base 依赖于 yiisoft/yii2-app-advanced
1、参考网址:https://www.shuijingwanwq.com/2020/01/19/3869/ ,将 Yii Framework 从 2.0.15.1 版本升级到 2.0.31 2、在一些使用了:\GuzzleHttp\json_encode、\GuzzleHttp\json_decode 的程序中报错,最终分析发现,原因在于,目录:/vendor/guzzlehttp/guzzle、/vendor/guzzlehttp/promises 已经不存在。如图1
在一些使用了:\GuzzleHttp\json_encode、\GuzzleHttp\json_decode 的程序中报错,最终分析发现,原因在于,目录:/vendor/guzzlehttp/guzzle、/vendor/guzzlehttp/promises 已经不存在
图1
3、仔细分析后,发现参考网址中的第 2 个步骤,运行 composer update 时,卸载了:guzzlehttp/promises、guzzlehttp/guzzle,如图2
仔细分析后,发现参考网址中的第 2 个步骤,运行 composer update 时,卸载了:guzzlehttp/promises、guzzlehttp/guzzle
图2
4、步骤 2 的问题,最终通过 Yii 帮助类 Json: https://www.yiiframework.com/doc/api/2.0/yii-helpers-json 得以解决,执行相应的替换操作


\GuzzleHttp\json_decode
\yii\helpers\Json::decode

\GuzzleHttp\json_encode
\yii\helpers\Json::encode


5、在一个 Yii 2 版本仍然为:2.0.15.1 的分支中,使用 依赖性检测 depends 命令可以查出已安装在你项目中的某个包,是否正在被其它的包所依赖,并列出他们。得出结论:guzzlehttp/promises 依赖于 guzzlehttp/guzzle,guzzlehttp/guzzle 依赖于 codeception/base,codeception/base 依赖于 yiisoft/yii2-app-advanced。如图3
在一个 Yii 2 版本仍然为:2.0.15.1 的分支中,使用 依赖性检测 depends 命令可以查出已安装在你项目中的某个包,是否正在被其它的包所依赖,并列出他们。得出结论:guzzlehttp/promises 依赖于 guzzlehttp/guzzle,guzzlehttp/guzzle 依赖于 codeception/base,codeception/base 依赖于 yiisoft/yii2-app-advanced
图3
<pre class="wp-block-syntaxhighlighter-code">

PS E:\wwwroot\pcs-api-feature-config-group-task-step> ./yii

This is Yii version 2.0.15.1.

The following commands are available:

- asset                        Allows you to combine and compress your JavaScript and CSS files.
    asset/compress (default)   Combines and compresses the asset files according to the given configuration.
    asset/template             Creates template of configuration file for [[actionCompress]].

- cache                        Allows you to flush cache.
    cache/flush                Flushes given cache components.
    cache/flush-all            Flushes all caches registered in the system.
    cache/flush-schema         Clears DB schema cache for a given connection component.
    cache/index (default)      Lists the caches that can be flushed.

- cmc-console-user             框架服务控制台的用户
    cmc-console-user/sync      同步框架服务控制台的用户模型(Http)至框架服务控制台的用户模型(R
                               edis)

- config-column-user           栏目人员配置
    config-column-user/sync    同步框架服务控制台的用户模型(Http)至栏目人员配置模型(MySQL)

- fixture                      Manages fixture data loading and unloading.
    fixture/load (default)     Loads the specified fixture data.
    fixture/unload             Unloads the specified fixtures.

- gii                          This is the command line version of Gii - a code generator.
    gii/controller             Controller Generator
    gii/crud                   CRUD Generator
    gii/extension              Extension Generator
    gii/form                   Form Generator
    gii/index (default)
    gii/model                  Model Generator
    gii/module                 Module Generator

- help                         Provides help information about console commands.
    help/index (default)       Displays available commands or the detailed information
    help/list                  List all available controllers and actions in machine readable format.
    help/list-action-options   List all available options for the $action in machine readable format.
    help/usage                 Displays usage information for $action.

- log                          日志
    log/delete                 日志的删除

- message                      Extracts messages to be translated from source files.
    message/config             Creates a configuration file for the "extract" command using command line options
                               specified.
    message/config-template    Creates a configuration file template for the "extract" command.
    message/extract (default)  Extracts messages to be translated from source code.

- migrate                      Manages application migrations.
    migrate/create             Creates a new migration.
    migrate/down               Downgrades the application by reverting old migrations.
    migrate/fresh              Truncates the whole database and starts the migration from the beginning.
    migrate/history            Displays the migration history.
    migrate/mark               Modifies the migration history to the specified version.
    migrate/new                Displays the un-applied new migrations.
    migrate/redo               Redoes the last few migrations.
    migrate/to                 Upgrades or downgrades till the specified version.
    migrate/up (default)       Upgrades the application by applying new migrations.

- plan-task                    选题任务
    plan-task/close            关闭选题任务

- serve                        Runs PHP built-in web server.
    serve/index (default)      Runs PHP built-in web server.


To see the help of each command, enter:

  yii help <command-name>

PS E:\wwwroot\pcs-api-feature-config-group-task-step> composer depends guzzlehttp/promises
guzzlehttp/guzzle  6.3.3  requires  guzzlehttp/promises (^1.0)
PS E:\wwwroot\pcs-api-feature-config-group-task-step> composer depends guzzlehttp/guzzle
codeception/base  2.5.2  requires  guzzlehttp/guzzle (>=4.1.4 <7.0)
PS E:\wwwroot\pcs-api-feature-config-group-task-step> composer depends codeception/base
shuijingwan/yii2-app-advanced  dev-feature-config-group-task-step  requires (for development)  codeception/base (^2.2.3)


</pre>
6、分别查看 codeception/base 的两个版本的 composer.json,Yii Framework 从 2.0.15.1 版本升级到 2.0.31,进而导致 codeception/base 从版本 2.5.2 升级到 2.5.6,而 codeception/base 的版本 2.5.6 已经放弃依赖 guzzlehttp/guzzle。观察可发现,codeception/base 的依赖类型为:require-dev,因此,其仅能够用于开发阶段,而不能够用于生产阶段。


    "require-dev": {
        "yiisoft/yii2-debug": "~2.0.0",
        "yiisoft/yii2-gii": "~2.0.0",
        "yiisoft/yii2-faker": "~2.0.0",
        "codeception/base": "^2.2.3",
        "codeception/verify": "~0.3.1"
    },


 

需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理