基于 Composer 更新 Yii 2 至最新版本后,软件包:guzzlehttp guzzle 的丢失的分析
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
3、仔细分析后,发现参考网址中的第 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
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)
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" },
近期评论