安全补丁SUPEE-8788-可能的问题?


108

最新的Magento 1安全补丁SUPEE-8788包含17个APPSEC更新,因此尽快应用它非常重要。另一方面,存在许多潜在的向后兼容性中断,并且鉴于过去一年的补丁程序历史,我不会粗心地应用它。

好消息是这一次不涉及任何前端模板,因此看起来我们不需要修补所有主题。 这仅适用于Magento 1.8或更高版本。

尽管如此:应用补丁后,您是否遇到任何兼容性问题或错误?


6
“不涉及前端模板”-对于较旧的Magento版本不正确。例如,1.7.0.2补丁程序会更改9个前端/基本/默认模板文件。
克里斯托夫在Fooman,2013年

magento.stackexchange.com/questions/140571/…欺骗这个人吗?也许在这里捆绑所有信息...
7ochem '16

2
对于任何对该补丁的.swf更新有疑问的人,我只是从补丁中删除了5951-9818行,并从中手动删除了.swf文件/skin/adminhtml/default/default/media-因为补丁无论如何都在做。
利亚姆·麦克阿瑟

不知道为什么,但是在1.8.0.0上安装了8788之后,修补程序7405报告为未安装。而先前已安装v1和v1.1
MagenX '16

2
@srinivas是否从此路径skin / adminhtml / default / default中删除了媒体文件夹?
Priya Ponnusamy

Answers:


107

重要笔记

请注意,1.9.3与1.9.2.4 + SUPEE-8788不同。这是两者之间的区别:https : //gist.github.com/digitalpianism/14a15cd52baede0e5d600e8c653f33e9

10月14日更新:该补丁的v2已发布(请参见下文) 从10月13日起,由于与以前的补丁不兼容,从Magento网站上删除了1.5.x至1.8.x的补丁(请参见下文):

https://community.magento.com/t5/Security-Patches/SUPEE-8788-AND-SUPEE-1533-Incompatible-Hunk-error/td-p/50434/highlight/false/page/2

V3的补丁

此新版本仅适用于Magento EE 1.13.0.x

应用V3:

  • 还原SUPEE 1533(如果已安装)
  • 安装SUPEE 3941(如果未安装)
  • 安装SUPEE 8788 v3

V2的补丁

应用V2:

  • 还原SUPEE 8788 v1
  • 还原SUPEE 1533(如果已安装)
  • 安装SUPEE 3941(如果未安装)
  • 安装SUPEE 8788 v2

DemacMedia开发了一个有用的bash脚本来自动化上面的过程,您可以在这里找到它:https : //github.com/DemacMedia/magento-SUPEE8788-patcher

补丁详情

在深入研究补丁之后,这里是有趣的部分(从1.9.2.4开始补丁):

  • Mage_Adminhtml_Block_Media_Uploader已替换为,Mage_Uploader_Block_Multiple因此有一个完整的Mage_Uploader模块可删除Flash支持。现在不赞成使用旧块,并扩展了新块。
  • 仍然是关于上传器的,Mage_Downloadable模块已经过重构,可以处理新的非闪存上传器。Mage_Uploader_Block_Single用作上传块,而不使用模板。
  • 在此之后的变化,T 他SWF文件skin/adminhtml/default/default/media/flex.swfskin/adminhtml/default/default/media/uploader.swf并且skin/adminhtml/default/default/media/uploaderSingle.swf已被删除。
  • 地址删除控制器现在直接通过getDeleteUrlfrom的表单密钥进行保护Mage_Customer_Block_Address_Book
  • 收藏项目拆除控制器现在与形式重点保护getRemoveUrlMage_Wishlist_Helper_Data
  • Paypal Express付款方式现在可确保在签出并注册新用户时,Magento中存在使用的客户电子邮件。(理解:新用户是在处理新报价之前创建的)
  • 现在,使用cURL / HTTP Client的付款方式已CURLOPT_SSL_VERIFYHOST设置为2(之前为0),并且CURLOPT_SSL_VERIFYPEER标记现在已添加到cURL调用中。可以通过“启用SSL验证”下拉菜单中的付款方式配置来启用/禁用“验证对等方”标志。
  • Mage_Http_Client_Curl现在已CURLOPT_SSL_VERIFYPEER设置为true(之前为false),请注意是否有使用它的自定义模块。
  • 产品图片的最大尺寸现在可以在配置中配置。注意:如果上传的图像太大,可能会导致有趣的错误消息:补丁上传后,Magento 1.9.2.2中不允许使用文件格式

SUPEE-8788 v2的已知问题

SUPEE-8788 v1的已知问题

已知的1.9.3.0问题

编辑:由于列表越来越长,并且在该答案中几乎没有主题(与SUPEE-8788不相关),您可以参考此帖子以获取已知的1.9.3.0问题列表:https://magento.stackexchange。 com / a / 140826/2380


1
感谢您提供的广泛清单!一个问题:您确定全文本搜索问题适用于SUPEE-8788补丁程序吗?我找不到与此功能相关的任何更改。
Aad Mathijssen '16

1
@MageDev,请参阅问题中的第三条评论;)
拉斐尔(Raphael)在Digital Pianism上,2013年

1
如果成功应用补丁后产品上传器无法正常工作,并且您正在使用流行的CreareSEO插件,则还需要应用此修复程序github.com/adampmoss/CreareSEO/pull/78
joesk 2016年

1
我注意到您提到“ Paypal Express付款方式现在可以确保所使用的客户电子邮件存在于Magento中。” 这是否意味着Guest无法通过PayPal Express签账?您必须是注册用户吗?我错过了什么吗?
图标

1
应用修补程序后,使用旧上传程序的某些第三方扩展名刚刚被破坏。例如,“ Magic 360”正在将一个标签添加到后端产品详细信息标签中。修补后,您将无法查看/编辑产品详细信息。我在Magento connect(magentocommerce.com/magento-connect/…)上的扩展开发人员中注意到了这个问题。
DarkCowboy

29

应用补丁程序时,可能会发生以下错误:

checking file skin/adminhtml/default/default/media/flex.swf
checking file skin/adminhtml/default/default/media/uploader.swf
checking file skin/adminhtml/default/default/media/uploaderSingle.swf
Reversed (or previously applied) patch detected!  Assume -R? [n]
Apply anyway? [n]
Skipping patch.
1 out of 1 hunk ignored
checking file skin/adminhtml/default/default/xmlconnect/boxes.css

8788修补程序包含二进制内容。由于Magento不提供任何直接下载链接(从那时起,我一直不喜欢该政策),因此您必须将补丁下载到计算机上,并使用文件传输应用程序(例如Windows上的WinSCP)将其上传到服务器。例如,WinSCP将以TEXT模式上载(默认情况下,WinSCP将* .sh文件作为文本处理)。

因此,解决方法是将补丁文件压缩/压缩并在服务器上再次解压缩/取消压缩。等。


对不起,我没有办法回答

  1. 下载正确的magento版本(例如:CE 1.9.1.0)
  2. 将以下文件替换为下载位置

skin / adminhtml / default / default / media / flex.swf skin / adminhtml / default / default / media / uploader.swf skin / adminhtml / default / default / media / uploaderSingle.swf

  1. 运行补丁

为我工作



10
您是否阅读了OP的问题?fschmengler问:“不过:应用补丁程序后,您是否遇到任何兼容性问题或错误?” 应用补丁时,我确实遇到了这个问题。我猜想这个线程的意思是,要记录SUPEE-8788的可能错误。-IMHO-补丁本身也有问题。
infabo

工作了请客,谢谢!最好也对将来的所有Magento补丁都这样做吗?
KiwisTasteGood

或者您只是dos2unix PATCH_SUPEE-8788_CE_1.9.2.4_v1-2016-10-11-07-03-46.sh
fbtb

通常,以前没有必要,我认为将来也没有必要。我猜上载的SWF文件是Magento 1.x随附的唯一二进制文件-现在它们已经不存在了。因此,我预计以后不会再有类似的问题。
infabo '16

3
使用FileZilla将.sh补丁文件上传到Magento根目录时,binary在上传补丁文件之前将传输类型设置为。参考
ForMat

25

如果您以前使用过SUPEE-1533,则修补程序将在 app/code/core/Mage/Adminhtml/controllers/DashboardController.php.

我通过...解决了

  1. 手动还原SUPEE-1533对该文件引入的更改
  2. 申请SUPEE-8788
  3. 手动重新引入SUPEE-1533对该文件引入的更改

从SUPEE-8788删除更改是危险的,因为补丁文件包含二进制数据并将其保存在编辑器中可能会引起问题(另一个问题)。


据我了解,您还原了原始的1533补丁,安装了SUPEE 8788,然后再次安装了1533?我理解正确吗?
2016年

我在28 app / design / frontend / base / default / template / review / form.phtml上遇到了FAILED HUNK的问题
Icon

9
我确实想知道为什么,当我们花时间正确应用官方的增量补丁时,如果在应用了先前提供的补丁后补丁不起作用的情况下不得不手动修复,就会受到惩罚。一个非常奇怪的方法。
乔恩·荷兰

1
1.9以下版本的大多数软件都安装了SUPEE 1533,无法正确安装补丁。SUPEE 8788与1533不兼容
图标

2
@JonHolland因为是Magento。
阿戈普

25

这是到目前为止我(和其他人)遇到的问题的摘要,我正在尝试使其排序,可以随意添加或链接任何缺少的内容,该文章是Community Wiki:

补丁失败的原因

如果看到“错误:无法成功应用/还原补丁”,请在日志消息中查找“ Hunk#1 FAILED”,以检查补丁失败的文件。

  • 显然,Magento 1.7的补丁v2希望SUPEE-3941能够出现,尽管它仅适用于Magento 1.8和1.9。如果您使用的是Magento 1.7,请参见中的与文件相关的错误downloader,请下载适用于1.8的SUPEE-3941并将其应用于1.7,它应该可以工作。在此处查看评论主题:SUPEE 8788安全补丁问题
  • 在以前应用过SUPEE-1533的Magento版本上,补丁程序会失败,app/code/core/Mage/Adminhtml/controllers/DashboardController.php因为文件同时受这两个补丁程序的影响,并且SUPEE-8788(错误!)假定存在未补丁程序的版本。补丁版本2仍然如此!版本2包括对SUPEE-1533的更改,因此,如果您以前安装了它,则仍必须还原它,但之后不必再次手动应用它。

  • 如果删除或重命名了“下载程序”目录,则该修补程序将失败,因为它会修补下载程序中的文件。最简单的解决方法是还原原始下载程序目录,应用补丁程序,然后再次删除目录。或者,您也可以downloader/lib/Mage/HTTP/Client/Curl.php从补丁中删除有关的说明。

  • 其他“ Hunk FAILED”消息通常是由于核心文件的更改或缺少先前的补丁程序引起的。确保已安装适用于您的Magento版本的所有以前的补丁程序,并且未在核心文件中进行任何更改。

  • 另一个常见的问题是,.swf由于二进制文件的内容,补丁无法删除文件。该错误将如下所示:

    checking file skin/adminhtml/default/default/media/uploaderSingle.swf
    Reversed (or previously applied) patch detected!  Assume -R? [n]
    Apply anyway? [n]
    Skipping patch.
    1 out of 1 hunk ignored
    

    或像这样

    Patching file skin/adminhtml/default/default/media/uploader.swf using Plan A...
    No such line 2 in input file, ignoring
    Empty context always matches.
    Hunk #1 failed at 0.
    1 out of 1 hunks failed while patching skin/adminhtml/default/default/media/uploader.swf
    Hmm...  The next patch looks like a unified diff to me...
    The text leading up to this was:
    --------------------------
    

    或像这样:

    Checking if patch can be applied/reverted successfully...
    /bin/patch: **** malformed patch at line 5790: ?rM]M??????&X㔮??v??Q;r?N?qJ??Y???I0?Y??4??'?????9?.??X?Ǒ?{??ax!G???I???q?u|????թ??????|
                                                   h??o?V@??|? ?g?H aꪭ??Ю???,I"?ğ????.??    yI?I\????)?X?
                         ?p???*?e?q?K8<DqD?H;|?
    ERROR: Patch can't be applied/reverted successfully.
    

    @infabo 在此答案中给出了可能的解决方案。如https://gist.github.com/piotrekkaminski/9bc45ec84028611d621e中所述,使用curl将补丁直接下载到我想应用该补丁的系统上总是对我有用,除非我在Cygwin上尝试过

处理失败补丁的高级方法: @PeterOCallaghan建议注释掉空运行行并手动处理* .rej文件。这样,可以部分应用补丁,如果补丁无法删除swf文件,则可以手动执行。或者,如果downloader由于删除该目录而无法更新文件,则可以忽略该目录。

  1. vi PATCH_SUPEE-8788_CE_1.8.1.0_v1-2016-10-11-06-54-44.sh(或类似的文件名)更改_apply_revert_patch dry-run#_apply_revert_patch dry-run

  2. 通过发行运行补丁 ./PATCH_SUPEE-8788_CE_1.8.1.0_v1-2016-10-11-06-54-44.sh

那将修补您的文件

  1. 评论_apply_revert_patch#_apply_revert_patch

  2. 再次运行补丁,添加app/etc/app/etc/applied.patches.list条目

  3. grep的所有.rej文件

    git status | grep *.rej

  4. 手动进行这些更改

应用补丁后的问题

表单键

  • 对于1.8之前的Magento版本,frontend/base/default模板有所更改。如果覆盖了这些文件,请确保在主题中手动应用相同的更改

    更具体地说,已为前端操作添加了一个表单密钥,例如:

    • 从愿望清单中删除商品
    • 从商店视图中删除客户地址
    • 更新您的购物篮中的报价项目

    如果您在执行这些操作时遇到问题,请参阅@LukeRogers的答案

自定义上传器

具有自定义上传表单的Unirgy_Rapidflow和其他扩展不再起作用。

参见@mpchadwick的答案,以及@lloiacono的评论

我用替换$this->getUploader()->getConfig()$this->getUploader()->getUploaderConfig()in 修复了它Unirgy_RapidFlow_Block_Adminhtml_Profile_Edit_Tab_Upload

要了解您的扩展程序是否使用此扩展名,可以在命令行上运行以下命令:

grep -R 'getUploader()->getConfig();' app/code/community

报告的错误消息

  • PHP致命错误:调用未定义函数hash_equals()

    如果你在之前的5.6版本的PHP,并覆盖发生code/core/Mage/core/functions.phpcode/local/Mage/core/functions.php(如果你使用Fishpig扩展,这可能是这种情况)。看到@ClaudiuCreanga的答案


补丁v2中解决的问题

如果遇到这些问题中的任何一个,则可能使用该修补程序的版本1(文件名中的“ v1”)。再次下载补丁程序以获取“ v2”,它可以解决以下问题:

  • SUPEE-3941和 downloader/lib/Mage/HTTP/Client/Curl.php

  • /lib/Unserialize/Reader/ArrValue.php中的消息“不支持的数据类型N”的“异常”

  • EE 1.14.2.0的补丁意外包含了一个新文件test_oauth.php,您应该删除该文件参见@MatthiasZeis的回答


更新购物篮中的报价项目时添加的表单密钥不是SUPEE-8788所添加的(至少不是从1.9.2.4起添加)
拉斐尔在Digital Pianism

至少在1.13.0.1补丁中,@ RaphaelatDigitalPianism至少将表单密钥验证添加到Mage_Checkout_CartController::updatePostAction,也可能是其他补丁版本。
路德·罗杰斯

23

如果你得到

Call to undefined function hash_equals() error

即使您的补丁程序成功,也可能意味着您已在中复制了functions.php app/code/local/Mage/Core

您也必须在其中插入该功能,因为该文件将覆盖核心文件。

因此,请app/code/local/Mage/Core/functions.php在末尾插入:

if (!function_exists('hash_equals')) {
    /**
     * Compares two strings using the same time whether they're equal or not.
     * A difference in length will leak
     *
     * @param string $known_string
     * @param string $user_string
     * @return boolean Returns true when the two strings are equal, false otherwise.
     */
    function hash_equals($known_string, $user_string)
    {
        $result = 0;

        if (!is_string($known_string)) {
            trigger_error("hash_equals(): Expected known_string to be a string", E_USER_WARNING);
            return false;
        }

        if (!is_string($user_string)) {
            trigger_error("hash_equals(): Expected user_string to be a string", E_USER_WARNING);
            return false;
        }

        if (strlen($known_string) != strlen($user_string)) {
            return false;
        }

        for ($i = 0; $i < strlen($known_string); $i++) {
            $result |= (ord($known_string[$i]) ^ ord($user_string[$i]));
        }

        return 0 === $result;
    }
}

1
副手,我知道Fishpig要求您执行此操作。因此,如果您安装了该软件,那么这将是您的问题。
mpchadwick '16

1
注意:我很困惑,是MWI要求您覆盖functions.php,而不是Fishpig mwi-plugin.com/documentation/installation
mpchadwick

18

在中PATCH_SUPEE-8788_EE_1.14.2.0_v1-2016-10-10-02-27-03.shtest_oauth.php在Magento根目录中创建一个文件。您将要删除此代码(或至少不将其部署到生产环境中),因为它可能向调用URL https://thedomain.tld/test_oauth.php的人员暴露完整的异常堆栈跟踪。


很好,马提亚!部署17个APPSEC修补程序并同时打开另一个载体会有些不好。您是否已将此信息报告给Magento?
布莱恩(Bryan'BJ)Hoffpauir Jr.

我确实已通过Magento支持人员打开了一张票,因为我敢肯定其他人现在也有。还没有听说过该修补程序的v2版本,但是他们应该意识到这一问题。
准对象'16

1
将会有一个v2,应尽快发布。是的,我在这里发布时进行了举报。
马提亚斯·蔡斯

1
看起来现在已修复
-Erfan

18

此版本适用于1.7 MAGENTO版本


如果您运行的是1.7.0.2,SUPEE 8788的版本2 将无法在372行上尝试将更改应用于Curl.php

patching file downloader/lib/Mage/HTTP/Client/Curl.php
Hunk #1 FAILED at 372.
1 out of 1 hunk FAILED -- saving rejects to file downloader/lib/Mage/HTTP/Client

说明说明我们应该还原SUPEE-1533安装SUPEE-3941

问题: SUPEE-3941仅适用于Magento CE 1.8-1.9。您可以尝试将其应用到1.7,它将应用。我认为补丁开发者 Magento应该为运行低于1.8的magento的用户发布SUPEE-8788的第3版,或者创建一个专为1.8以下的版本设计的附加SUPEE-3941补丁。

顺便说一句SUPEE-8788的1.0版本并未Curl.php对1.7.0.2错误(我测试了许多安装)

提示:如果最后遇到.swf错误,请确保压缩补丁程序,然后上传到服务器并在其中解压缩。SWF错误将消失。

更新:

Magento表示,基本上可以在Magento 1.7.0.2版本上安装SUPEE-3941补丁,以避免在应用SUPEE-8788时出错


我们已经放弃了
datasn.io 16-10-16

@ kavoir.com在1.7.0.2上安装时也会出现相同的CURL.PHP错误?
图标

1
同样的问题是在1.7.0.2上安装8788 V2,尽管有趣的是,在没有可用SUPEE-3941的较新的1.9.2.1版本的站点上,我们也遇到了curl.php错误。恢复1533也不会对这个问题有所帮助
乔恩·霍兰德

@JonHolland我写信给了magento团队...我希望他们能回应
Icon

2
我收到了magento社区负责人的回复,基本上可以在1.7.0.2版本上安装3941补丁了。–
Icon

15

原始DashboardController.php(1.7.0.2-未修补,来自magento)

  if ($params = unserialize(base64_decode(urldecode($gaData)))) {

1533已修补的DashboardController.php包含以下更改

 if ($newHash == $gaHash) {
            $params = json_decode(base64_decode(urldecode($gaData)), true);
            if ($params) {

8788补丁在DashboardController.php中进行了以下更改

 if (hash_equals($newHash, $gaHash)) {
            if ($params = unserialize(base64_decode(urldecode($gaData)))) {

如您所见,8788与1533相比具有修改的更改,我不确定mpchadwick建议的修改文件的理想方式,即在安装8788之后用1533手动替换8788更改。基本上删除了8788更改。

有什么建议么?


2
IMO所需的最终结果是两者的混合。它应该是json_decode,但应使用hash_equals而不是==。这样可以防止定时攻击(很难利用)。
彼得·奥卡拉汉

同意@Peter。如果使用Git,请还原SUPEE-1533的提交,应用新的修补程序,提交,然后再次还原恢复的提交。然后DashboardController.php应自动解决冲突。
Fabian Schmengler,

1
您能否提供DashboardController.php的一段代码,在安装8788之后我们应该替换它?我不完全确定要编辑的内容,就像我上面提到的那样,1533和8788的修补线看起来不一样。您能否提供一个手动修改的版本?
图标

在手动修改1533更新后,这8788代码应该是什么样子?if(hash_equals($ newHash,$ gaHash)){if($ params = json_decode(base64_decode(urldecode($ gaData)))){
图标

1
关于两次还原提交的注意事项:您可能可以使用SUPEE-1533 git revert -n 123456abgit cherry-pick -n 123456ab暂时将其撤消,而无需为其创建额外的提交。
马提亚斯·蔡斯

14

有一半人打算将此帖子标记为主要基于观点或没有明确答案的;)

表单密钥已添加到几个控制器中,其数量取决于您的magento版本。

如果遇到麻烦

  • 从愿望清单中删除商品
  • 从商店视图中删除客户地址
  • 更新您的购物篮中的报价项目

您需要检查主题.phtml文件,并确保您正在检查POSTform key参数,以便它将通过检查以下控制器操作的检查:

class Mage_Checkout_CartController extends Mage_Core_Controller_Front_Action

     public function updatePostAction()
     {
+        if (!$this->_validateFormKey()) {
+            $this->_redirect('*/*/');
+            return;
+        }
+

这些问题使以前的补丁程序使很多人不满意,应用补丁程序时,很容易错过带有覆盖模板的自定义前端主题。

表密钥通常添加到.phtml包含窗体作为一个额外的模板input一样

<input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />

是否有会影响表格的完整列表?因此,我可以一劳永逸地测试并修复所有问题。不想像这样的秘密愚蠢的功能障碍惹恼客户或降低转换率。
datasn.io

如果SUPEE 8788在1.7上完美安装,并且确实在(app / design / frontend / base / default / template .....)中进行了更改。但是,尽管更改了网站前端的愿望清单,但添加删除按钮都可以正常工作。我们还需要手动修补主题文件吗?或者,只要长补丁不会破坏前端的任何内容,我们可以保持现状吗?
2016年

11

我在1.9.2.4中的swf中遇到了相同的问题。

固定的Fox-请按照以下步骤操作。

步骤1.将安全补丁8788 SSH文件下载到此链接:-https: //magento.com/tech-resources/downloads/magento/

步骤2.下载安全补丁8788 SSH文件后,请放入一个文件夹中并制作相同的文件夹Zip文件。

第3步。请将Zip文件夹上载到root magento文件夹,然后通过SSH Putty解压缩。

步骤4.运行补丁:-$ bash PATCH_SUPEE-8788_CE_1.9.2.4_v1-2016-10-11-07-03-46.sh

*注意:补丁文件包含文本格式的整个二进制文件,这就是为什么当您上传没有zip文件的安全补丁8788 SSH文件时,同一文件将被损坏的原因。*


10

贴上SUPEE-8788后,我不再能够使用Unirgy_RapidFlow 2.0.0.18加载“导入”配置文件,出现500错误(Apache或HTTPD日志中没有)。

我仍在调试过程中,并正在与Unirgy一起解决问题,但看来上载程序块引起了问题(Unirgy_RapidFlow_Block_Adminhtml_Profile_Edit_Tab_Upload)。

该修补程序Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content对父项进行了一些更改。

除了uRapidFlow,其他允许文件上传的第三方模块也可能由于SUPEE-8788而中断。


您是否已经找到解决方案?我通过用Unirgy_RapidFlow_Block_Adminhtml_Profile_Edit_Tab_Upload中的$ this-> getUploader()-> getUploaderConfig()替换$ this-> getUploader()-> getConfig()来修复它
lloiacono

到目前为止很好。Unirgy似乎也已在2.0.0.23中修复它。secure.unirgy.com/release-notes.php?m=1#RapidFlow我正在与客户合作购买其他升级,但无法进行验证。
mpchadwick '16

在您的docroot上运行此命令以查找需要修复的其他文件:grep -r'getUploader()-> getConfig()'./
lloiacono

8

执行补丁脚本时收到以下消息:

can't find file to patch at input line 4753
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git downloader/lib/Mage/HTTP/Client/Curl.php downloader/lib/Mage/HTTP/Client/Curl.php
|index 6d0607e..5757be3 100644
|--- downloader/lib/Mage/HTTP/Client/Curl.php
|+++ downloader/lib/Mage/HTTP/Client/Curl.php

我认为这是因为我按照https://www.magereport.com的建议重命名了“下载程序”文件夹。

我将文件夹临时重命名为“ downloader”,正确应用了补丁,然后使用其秘密名称重命名了该补丁。


8

由于SUPEE-3941,在1.9.0.0上进行修补也失败了(可能在1.8.0.0之前影响到1.9.0.1)。3941修补了downloader / lib / Mage / HTTP / Client / Curl.php的补丁程序,现在8788失败了。

checking file downloader/lib/Mage/HTTP/Client/Curl.php
Hunk #1 FAILED at 378.
1 out of 1 hunk FAILED
checking file js/lib/uploader/flow.min.js

以下1.9.0.1的解决方法。更改太彻底,可能需要调整8788补丁本身。

编辑:编辑补丁,搜索Curl.php并替换

diff --git downloader/lib/Mage/HTTP/Client/Curl.php downloader/lib/Mage/HTTP/Client/Curl.php
index c55f88d..31f9f77 100644
--- downloader/lib/Mage/HTTP/Client/Curl.php
+++ downloader/lib/Mage/HTTP/Client/Curl.php
@@ -378,8 +378,8 @@ implements Mage_HTTP_IClient
         }

         $this->curlOption(CURLOPT_URL, $uri);
-        $this->curlOption(CURLOPT_SSL_VERIFYPEER, FALSE);
-        $this->curlOption(CURLOPT_SSL_VERIFYHOST, 2);
+        $this->curlOption(CURLOPT_SSL_VERIFYPEER, true);
+        $this->curlOption(CURLOPT_SSL_VERIFYHOST, 'TLSv1');

         // force method to POST if secured
         if ($isAuthorizationRequired) {
diff --git js/lib/uploader/flow.min.js js/lib/uploader/flow.min.js 

diff --git downloader/lib/Mage/HTTP/Client/Curl.php downloader/lib/Mage/HTTP/Client/Curl.php
index c55f88d..31f9f77 100644
--- downloader/lib/Mage/HTTP/Client/Curl.php
+++ downloader/lib/Mage/HTTP/Client/Curl.php
@@ -378,8 +378,8 @@ implements Mage_HTTP_IClient
         $uriModified = $this->getSecureRequest($uri, $isAuthorizationRequired);
         $this->_ch = curl_init();
         $this->curlOption(CURLOPT_URL, $uriModified);
-        $this->curlOption(CURLOPT_SSL_VERIFYPEER, false);
-        $this->curlOption(CURLOPT_SSL_VERIFYHOST, 2);
+        $this->curlOption(CURLOPT_SSL_VERIFYPEER, true);
+        $this->curlOption(CURLOPT_SSL_VERIFYHOST, 'TLSv1');
         $this->getCurlMethodSettings($method, $params, $isAuthorizationRequired);

         if(count($this->_headers)) {
diff --git js/lib/uploader/flow.min.js js/lib/uploader/flow.min.js

在安装所有以前的补丁程序之后,我自定义了补丁程序文件以适用于所有Magento版本:magentohosting.pro/files/MageHost.pro_fixed_SUPEE-8788_v2.zip
Jeroen Vermeulen-MageHost

8

这就是我得到的

Hunk #1 FAILED at 373.
1 out of 1 hunk FAILED -- saving rejects to file downloader/lib/Mage/HTTP/Client/Curl.php.rej
patching file js/lib/uploader/flow.min.js
patching file js/lib/uploader/fusty-flow-factory.js
patching file js/lib/uploader/fusty-flow.js
patching file js/mage/adminhtml/product.js
patching file js/mage/adminhtml/uploader/instance.js
patching file skin/adminhtml/default/default/boxes.css
patching file skin/adminhtml/default/default/media/flex.swf
patching file skin/adminhtml/default/default/media/uploader.swf
patching file skin/adminhtml/default/default/media/uploaderSingle.swf
patching file skin/adminhtml/default/default/xmlconnect/boxes.css

在安装中获得完全相同的错误。很想知道您是否发现了什么。
TunaMaxx

不,仍在等待其他人知道这一点
Haim

2
参见magento.stackexchange.com/a/73957/9276。如果您的Curl.php文件具有此修复程序,则撤消该更改(将行还原为CURLOPT_SSL_CIPHER_LIST /'TLSv1'),应用补丁,然后重做更改。

谢谢@乔。只是回到这里发布相同的信息。你打败我了!那就是我要睡觉的东西。:)
TunaMaxx

有同样的问题,就解决了。谢谢!
dafyddPrys

8

看起来Magento将发布SUPEE 8788的更新版本,以修复SUPEE 1533的兼容性。我不确定现在手动应用修补程序是否是个好主意。手动更改可能会损害将来的修补程序更新。想听听您的想法。

Magento社区经理已确认。 在美国东部标准时间10月13日下午3点。所有版本低于1.9的补丁程序都将从下载列表中删除 https://www.magentocommerce.com/download?_ga=1.236497153.1889606568.1445610645 参见帖子:https : //community.magento.com/t5 / Security-Patches / SUPEE-8788-AND-SUPEE-1533-Incompatible-Hunk-error / mp / 50514 / highlight / false#M1805


1
如果更新的补丁程序的结果与我们的手动修复程序的结果完全相同,并且希望是这种情况,那么我认为没有问题。不再需要更新的补丁,以后的补丁也不会有所不同。
Fabian Schmengler '16

1
@fschmengler与SUPEE-7405 IMO的PHP 5.5不兼容非常相似。该修补程序将反映手动修复。
拉斐尔(Raphael)在

1
@fschmengler据我所知,magento将再次发布与修复完全相同的补丁。我想最好删除旧的补丁程序(自行修改)并安装新的补丁程序(可能在第二天发布。到明天为止,我们应该进行更新。谢谢您的帮助!
Icon

我不是在怀疑这个贡献的价值,而是坚持问答式,这个答案似乎对我来说不是一个答案,更多的更新是@fschmengler可以添加到他的原始问题中(或者您可以将其添加到社区Wiki答案)。
7ochem

8

我们收到有关以下新问题的报告,而我在其他帖子中没有看到这些报告:

  • 在某些情况下,新发行版中的异常-addCrumbs()方法调用(如果未定义getStoreConfig(web / default / show_cms_breadcrumbs))。应该不会影响补丁,只有1.9.3 / 1.14.3版本

应用补丁程序时,1.9.1.0中的/lib/Unserialize/Reader/ArrValue.php中的消息“不受支持的数据类型N”为“异常”,并且可能为较早版本。在修补程序版本2中解决。

对于这些问题,目前没有已知的简便解决方法。我们正在努力以新的修补程序版本解决它们。



在1.6和1.7版本上安装SUPEE 8788时,如何解决Curl.php错误的任何想法吗?
2016年

8

当您同时为样本和链接下载可下载产品的相同文件时,上传器中断。请注意,只有在两个区域中使用相同的文件时,才会发生这种情况。(它以前在补丁程序之前可以正常工作。)

要复制,请编辑可下载产品,然后单击“可下载信息”选项卡:

  1. 打开手风琴的Samples行并浏览示例文件。
  2. 在手风琴的“ 链接”行上,浏览下载链接
  3. 在“链接”部分中单击“ 上传文件”

上载程序将上载示例文件而不是可下载链接文件,并且您在可下载链接部分中浏览的文件将消失。

我能够在1.7.0.2 CE补丁安装的原始版本上重现此内容。


事实证明,这是用于上传的底层JS库的行为:github.com/flowjs/flow.js/issues/76
Laura,

6

是的,我在登录时确实遇到了其他问题,它将始终返回以下内容:

我发现这是因为在Enterprise_Pci_Model_Observer类的第165行上,

代替:

if (!Mage::helper('core')->getEncryptor()->validateHashByVersion($password, $model->getPassword())) {

这将解决:

if (!Mage::helper('core')->getEncryptor()->validateHashByVersion($password, $model->getPasswordHash())) {

由于我不喜欢更改核心(甚至转移到本地),因此最好是Magento进行修正或澄清。目前,我正在创建新扩展来扩展此扩展并为getPassword()创建函数(因为我要确保所有开发人员都使用开发人员模式)。


2
现在已经应用了补丁的V2,我在修补EE1.12时遇到了同样的问题。看起来此文件在1.12和1.14之间的某个时间点已更改,但不是补丁的一部分
Chris

1
与Magento一起提出了这个问题,他们提供了进一步的补丁来解决该问题。所做的更改与上述相同。
克里斯(Chris)

6

编辑补丁文件

如果任何人都必须编辑补丁文件,则不要在编辑器中进行编辑,因为这会破坏补丁中封装的二进制文件。

如果您有方便的命令行,即。linux / * unix尝试使用sed实用程序删除特定行。

向@fooman提出提示。看到他的原始要旨

sed -ie '101,111d' PATCH_SUPEE-8788_CE_1.7.0.2_v1-2016-10-11-06-36-18.sh

这将删除行101至111。

表格提交问题。

如果您看到上述问题,也可以:

<?= $this->getBlockHtml('formkey'); ?>

有关更多信息,请参考这篇文章。什么是getBlockHtml('formkey')?


4
请注意,<?=并非所有的php配置都启用了它
拉斐尔(Raphael)在Digital Pianism上2016年

@RaphaelatDigitalPianism你是正确的。尽管<?=在大多数php.ini配置中默认启用了此功能,但某些主机确实选择禁用它。
谢尔盖·菲利波夫

5

CE 1.6.2.0和SUPEE-3941

要应用安全补丁SUPEE-8788(第2版),(http://devdocs.magento.com/guides/m1x/other/ht_install-patches.html#apply-8788-new),建议先应用SUPEE-3941 。

但是,在补丁下载页面上,没有适用于CE 1.6.2.0的SUPEE-3941补丁。该补丁仅适用于CE 1.8和1.9。

如该线程中所述,在CE 1.7上应用可用的SUPEE-3941补丁(对于CE 1.8和1.9)似乎是可以的。

在CE 1.6.2.0上应用SUPEE-3941(针对CE 1.8和1.9)还可以吗?我尝试在CE 1.6.2.0上应用它,并收到以下错误:

Checking if patch can be applied/reverted successfully...
-e ERROR: Patch can't be applied/reverted successfully.

checking file downloader/Maged/Model/Connect.php
Hunk #1 succeeded at 489 (offset 3 lines).
checking file downloader/lib/Mage/Connect/Backup.php
checking file downloader/lib/Mage/Connect/Command.php
Hunk #1 FAILED at 64.
Hunk #2 succeeded at 205 with fuzz 2 (offset -44 lines).
Hunk #3 succeeded at 382 (offset -53 lines).
1 out of 3 hunks FAILED
checking file downloader/lib/Mage/Connect/Command/Install.php
Hunk #1 FAILED at 90.
Hunk #2 succeeded at 333 with fuzz 1 (offset 17 lines).
Hunk #3 succeeded at 363 (offset 17 lines).
1 out of 3 hunks FAILED
checking file downloader/lib/Mage/Connect/Packager.php
Hunk #4 FAILED at 268.
Hunk #5 FAILED at 290.
Hunk #6 succeeded at 369 with fuzz 2.
Hunk #7 FAILED at 377.
Hunk #9 FAILED at 428.
4 out of 10 hunks FAILED
checking file downloader/lib/Mage/Connect/Rest.php
Hunk #1 succeeded at 71 with fuzz 2 (offset -11 lines).
checking file downloader/lib/Mage/Connect/Singleconfig.php
Hunk #1 succeeded at 100 (offset -36 lines).
checking file downloader/lib/Mage/Connect/Validator.php
Hunk #1 succeeded at 418 (offset -41 lines).
Hunk #2 succeeded at 431 (offset -41 lines).
checking file downloader/lib/Mage/HTTP/Client/Curl.php
checking file downloader/template/settings.phtml

5

有点晚了,但我们发现补丁SUPEE-8788 V2中存在一个问题,该问题至少适用于Magento 1.7.0.2和1.7.0.1的补丁文件。可能这也适用于存在修补程序版本的所有先前版本。从1.8开始的Magento版本不受影响,因为该补丁不会更改这些模板。

详细

该修补程序缺少文件的格式密钥 app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml

没有它,登录将无法在一页结帐中运行(只是没有错误,它无法正常工作)。

固定

必须像以下补丁中一样插入一个formkey:

diff --git a/app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml b/app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml
index 9d15a577b..18483a3c5 100644
--- a/app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml
+++ b/app/design/frontend/base/default/template/persistent/checkout/onepage/login.phtml
@@ -71,6 +71,7 @@
         <h3><?php echo $this->__('Login') ?></h3>
         <?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
         <form id="login-form" action="<?php echo $this->getPostAction() ?>" method="post">
+        <?php echo $this->getBlockHtml('formkey'); ?>
         <fieldset>
             <h4><?php echo $this->__('Already registered?') ?></h4>
             <p><?php echo $this->__('Please log in below:') ?></p>

4

对于1533修补站点,只需替换PATCH_SUPEE-8788 *****。sh中的以下行:

diff --git app/code/core/Mage/Adminhtml/controllers/DashboardController.php app/code/core/Mage/Adminhtml/controllers/DashboardController.php
index 09ffc4c..367bf8e 100644
--- app/code/core/Mage/Adminhtml/controllers/DashboardController.php
+++ app/code/core/Mage/Adminhtml/controllers/DashboardController.php
@@ -91,7 +91,7 @@ class Mage_Adminhtml_DashboardController extends Mage_Adminhtml_Controller_Actio
         $gaHash = $this->getRequest()->getParam('h');
         if ($gaData && $gaHash) {
             $newHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData);
-            if ($newHash == $gaHash) {
+            if (hash_equals($newHash, $gaHash)) {
                 if ($params = unserialize(base64_decode(urldecode($gaData)))) {
                     $response = $httpClient->setUri(Mage_Adminhtml_Block_Dashboard_Graph::API_URL)
                             ->setParameterGet($params) 

通过:

diff --git a/app/code/core/Mage/Adminhtml/controllers/DashboardController.php b/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
index ab2d654..367bf8e 100644
--- a/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/DashboardController.php
@@ -91,9 +91,8 @@ class Mage_Adminhtml_DashboardController extends Mage_Adminhtml_Controller_Actio
         $gaHash = $this->getRequest()->getParam('h');
         if ($gaData && $gaHash) {
             $newHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData);
-            if ($newHash == $gaHash) {
-                $params = json_decode(base64_decode(urldecode($gaData)), true);
-                if ($params) {
+            if (hash_equals($newHash, $gaHash)) {
+                if ($params = unserialize(base64_decode(urldecode($gaData)))) {
                     $response = $httpClient->setUri(Mage_Adminhtml_Block_Dashboard_Graph::API_URL)
                             ->setParameterGet($params)
                             ->setConfig(array('timeout' => 5))
diff --git a/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php b/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
index da1b14a..b6d72c0 100644
--- a/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
+++ b/app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
@@ -444,7 +444,7 @@ class Mage_Adminhtml_Block_Dashboard_Graph extends Mage_Adminhtml_Block_Dashboar
             }
             return self::API_URL . '?' . implode('&', $p);
         } else {
-            $gaData = urlencode(base64_encode(json_encode($params)));
+            $gaData = urlencode(base64_encode(serialize($params)));
             $gaHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData);
             $params = array('ga' => $gaData, 'h' => $gaHash);
             return $this->getUrl('*/*/tunnel', array('_query' => $params));

基本上,它只恢复了1533,剩下8788。


据我了解,8788会覆盖DashboardController.php中的更改,而原来的1533更改将被消除吗?
图标

2
是的,1533年用json_encode()替换serialize()的目的是为了减少攻击通过的可能性($ newHash == $ gaHash)。尽管8788出于相同目的添加了hash_equals()
William Zhao

太好了,我想做些其他的事情,在我的测试站点上,我上传了干净的DashboardController.php(原始magento文件)并安装了SUPEE8788。但是,我在这个论坛上阅读了一个绅士,他提到手动重新引入supee 1533对Supee的更改。 8988修改的文件。您如何看待我的方法?
图标

图标,看一下我上面的差异,如果您已经有SUPEE 1533,则需要以“ APP / code / core / Mage / Adminhtml / Block / Dashboard / Graph.php”的方式更改由SUPEE 1533更新的行修补。否则Graph.php将触发json格式的参数,并且您将无法通过unserialize()对其进行解码
William Zhao

4

应用修补程序后,Authorize.net捕获中断。授权的效果很好,但是在获取付款发票时会显示“网关错误:需要信用卡号”。付款日志文件显示了x_type参数auth_capture现在可以传递值,但是在它过去用来传递的补丁之前prior_auth_capture效果很好。有人遇到这个问题吗?

更新:修复此问题-Authorize.net无法捕获


4

我使用SUPEE-8788的SSH修补了Magento 1.9.2.4的副本我使用SUPEE-8788的FTP修补了Magento 1.9.2.4的另一个副本我使用SUPEE-8788的SSH修补了Magento 1.9.1.0的副本使用了magento 1.9.3.1的新副本

在所有具有SUPEE-8788的magento网站中,我都遇到相同的问题(可能是补丁的错误)

当我尝试通过单击“ X” 来添加新行(一个或多个)时,使用可下载产品并进入可下载信息->示例,我将无法删除该行在此处输入图片说明

我不是Magento的专家,所以我正在寻找解决方案。如果我发现我会发表,如果你们中的任何人有解决方案,那对我来说将非常有用

更新:使用Chrome检查器,我看到此错误:在此处输入图片说明

******* 我找到了解决方案 *******

我花了2天的时间,希望对您有所帮助,这是SUPEE-8788中的错误

打开里面的samples.phtml app/design/adminhtml/default/default/template/downloadable/product/edit/downloadable

查找功能

remove : function(event){
    var element = $(Event.findElement(event, 'tr'));
    alertAlreadyDisplayed = false;
    if(element){
        element.down('input[type="hidden"].__delete__').value = '1';
        element.down('div.flex').remove();
        element.addClassName('no-display');
        element.addClassName('ignore-validate');
        element.hide();
    }
},

并替换为

remove : function(event){
    var element = $(Event.findElement(event, 'tr'));
    alertAlreadyDisplayed = false;
    if(element){
        element.down('input[type="hidden"].__delete__').value = '1';
        Element.select(element, 'div.flex').each(function(elm){
            elm.remove();
        });
        element.addClassName('no-display');
        element.addClassName('ignore-validate');
        element.hide();
    }
},

这将解决BUG


3

在运行1.9.2.1的站点的测试副本上应用了PATCH_SUPEE-8788_CE_1.9.2.1_v1-2016-10-11-07-00-43,它破坏了结帐。还原补丁程序,结帐将再次正常工作。

提交订单时,您将返回购物车,而不是结帐成功。认为我将在等待.1版本之前再试一次。


听起来好像在保存订单时引发了异常,您是否检查了日志?
simonthesorcerer

看起来是这样... PHP致命错误:类“Mage_Core_Helper_UnserializeArray”不... /的public_html /应用/ Mage.php发现行547
亚当拉韦吕

@AdamLavery转到Var / cache并删除缓存文件夹。当我将修补程序恢复为原始状态时,会收到该错误。它是一个缓存的东西。
图标

新补丁应尽快推出。这是一个巨大的补丁更新,预期不会出现任何错误。是的。
图标

1
这可能是因为您丢失app/code/core/Mage/Core/Helper/UnserializeArray.php了SUPEE-6788中添加的此文件,您可能尚未安装。看起来SUPEE-8788对SUPEE-6788具有未记录的依赖性。
泰勒(Tyler V.)

3

Magento在早期的电子邮件中指出,他们将生产新的补丁程序版本,以解决SUPEE-1533和SUPEE-3941的兼容性问题。因此,也许只是抱一下马。

企业版1.14.3,社区版1.9.3和SUPEE-8788企业版1.14.3和社区版1.9.3提供了120多种质量改进,并支持PHP 5.6。他们还解决了关键的安全问题,包括:...

... SUPEE-8788补丁解决了早期Magento版本中的这些安全问题。不幸的是,我们发现,如果商店先前已应用SUPEE-1533或SUPEE-3941安全补丁,那么Community Edition 1.8和更早版本以及Enterprise Edition 1.13和更早版本的SUPEE-8788修补程序将失败。我们正在努力纠正此问题,并将在接下来的一到三天内提供新的补丁程序。在此之前,我们将从发行版中删除这些版本的SUPEE-8788补丁...

但是,我担心我的有效Magento版本介于他们认为有效的CE 1.9.3和即将在V1.8及以下版本推出的新版本之间。我已经与他们联系,所以我们将拭目以待。


并不是真正的“答案”,但希望能提供有用的信息。
乔恩·荷兰

乔恩,您好,您也可以编辑@fschmengler的原始问题,并将其添加到底部作为UPDATE。我认为他会接受并批准该编辑。
7ochem '16

好主意,但是有人已经添加了一些东西:)
乔恩·霍兰德

3

我不是打补丁的忠实粉丝。我个人将所有Magento文件从其目录中删除,然后上传新版本(使用Shell脚本)。多年来安装的所有文件(如模块或主题)仍然存在。对于数据库,我在全新安装的版本之间进行了比较。一种方法是在数据库中创建或删除列/表,另一种方法是仅更改/app/etc/local.xml文件名再次安装Magento。我喜欢第一个。

如果不将数据库结构更改为1.9.3.0版,则会出现一些错误,或者无法加载管理区域。如果有人对Magento CE 1.9.2.4和1.9.3.0之间的Magento目录和数据库比较感兴趣,只需从此处下载文件:

Magento比较:版本1.9.2.4-1.9.3.0

有两个HTML文件,它们的视觉效果非常好。

我今天用我的方法而不是打补丁更新了4家商店。一切都运行没有任何问题。


如果您使用的是最新版本,并且该修补程序有一个新版本,那就很好了,因为1.9.2.2、1.9.2.3和1.9.2.4就是这种情况-但是此修补程序没有新版本1.9.2.5 。1.9.3.0版包含许多与安全性无关的其他更改。
Fabian Schmengler '16

通过我的方法,我获得了二合一的安全更新和新功能。唯一的问题是您必须了解两次发行之间文件系统和数据库中发生了什么。当您知道自己在做什么时,这没什么大不了的。而且您拥有更好的控制。从1.7版本开始,我正在使用此方法。
ADDISON74

3

大多数Magento CE(总共6个)安装都没有运气。不同版本:1.9.1、1.9.0.1、1.8.1。

我已经下载了正确的相应8788补丁。我已确保在适用时还原1533。

我得到以下可疑的关键输出:

Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

...

checking file downloader/lib/Mage/HTTP/Client/Curl.php
Hunk #1 FAILED at 372.

...检查文件app / code / core / Mage / Adminhtml / controllers / IndexController.php Hunk#1成功通过373(偏移-19行)。...

can't find file to patch at input line 5810
|diff --git lib/Unserialize/Parser.php lib/Unserialize/Parser.php
|index 423902a..2c01684 100644
|--- lib/Unserialize/Parser.php
|+++ lib/Unserialize/Parser.ph

与上述相同:lib / Unserialize / Reader / Arr.php lib / Unserialize / Reader / ArrValue.php并说那些笨蛋被忽略了。

注意:我的未序列化/阅读器目录中没有任何内容。完全是空的。注意:Curl.php在下载器目录中。未重命名。它完成了,但是我看不到SWF文件已删除。我看不到Applied.patches.list列表中应用的补丁

没有意义。


好吧..想通了。绝对需要按顺序处理所有旧补丁。我有几个尚未应用的较旧补丁。一旦将它们拆下并应用到生产线上,事情就开始成功修补。但是,我确实发现,每当任何ANY补丁文件出现大块错误时,我都必须进入该补丁,找到要替换的补丁,然后在magento安装中手动进行。然后从补丁中删除那些“差异”行,然后重新运行。基本上,每当您看到大块错误时,请进入补丁程序,查看其试图从中进行+/-的操作,然后自己进行操作。
Rich Yessian

3

我今天修补了大约10个网站,并且每个SUPEE-8788补丁程序失败的网站都有SUPEE-6788 MISSING

这导致(示例)以下错误:

can't find file to patch at input line 5810
|diff --git lib/Unserialize/Parser.php lib/Unserialize/Parser.php
|index 423902a..2c01684 100644
|--- lib/Unserialize/Parser.php
|+++ lib/Unserialize/Parser.php

安装SUPEE-6788后,SUPEE-8788正确打了补丁。


3

如果您遇到Hunk #1 failedxxx错误,这就是我所做的

我知道了Hunk #1 failed at 373。错误!下线后

检查文件下载器/lib/Mage/HTTP/Client/Curl.php

因此,我检查了Curl.php文件,发现之前已对文件进行了修改(注释了一行)。我还原了原始文件,然后再次运行了补丁。然后补丁成功了。;)。

然后我检查了:

/app/etc/applied.patches.list 一切似乎都很好

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.