magento 2.x 打补丁教程
打补丁务必在开发版本进行,不要直接在生产环节撸,打补丁有可能会破坏系统导致bug,要在开发版本测试好。
补丁最终的目的就是替换某些有问题的源代码。
M2里修补程序分为三种:
- 修补程序-Magento在Magento安全中心上发布的补丁。
- 单独的补丁程序-Magento支持人员单独创建和分发的补丁程序。
- 自定义补丁-您可以从git commit创建的非官方补丁。
一般我们只需要用Magento官方安全中心发布的修补程序即可,其他2种是更细的情况。
一,命令行方式
1,去Magento Security Center 下载你需要的补丁文件下来。传到你服务器项目的根目录。
2,服务器安装`patch`命令
比如ubuntu是
sudo apt-get update -y sudo apt-get install -y patch
3,执行打补丁命令
patch < patch_file_name.patch
如果命令行显示:
File to patch:
,则意味着即使路径看起来正确,也无法找到目标文件。在命令行终端显示的框中,第一行显示要修补的文件。复制文件路径并将其粘贴到File to patch:
提示中,然后按Enter
,即可
4,去后台清magento缓存
二,composer方式
1,先给项目安装composer-patches库
composer require cweagans/composer-patches
2,编辑composer.json文件,添加类似如下的补丁信息
"extra": { "composer-exit-on-patch-failure": true, "patches": { "magento/module-payment": { "MAGETWO-56934: Checkout page freezes when ordering with Authorize.net with invalid credit card": "patches/composer/github-issue-6474.diff" } } }
- Module: "magento/module-payment"
- Title: "MAGETWO-56934: Checkout page freezes when ordering with Authorize.net with invalid credit card"
- Path to patch: "patches/composer/github-issue-6474.diff"
这些信息是最开始的单独的补丁程序和自定义补丁,需要你去magento github里找。
3,安装激活补丁程序,-v表示输出调试信息
composer -v install
composer会自动下载安装补丁程序
4,更新composer.lock
文件。锁定文件跟踪哪些补丁已应用于对象中的每个Composer软件包。
composer update --lock
5,去后台清magento缓存
参考
https://devdocs.magento.com/guides/v2.4/comp-mgr/patching.html