最新的Magento 1安全补丁SUPEE-8788包含17个APPSEC更新,因此尽快应用它非常重要。另一方面,存在许多潜在的向后兼容性中断,并且鉴于过去一年的补丁程序历史,我不会粗心地应用它。
好消息是这一次不涉及任何前端模板,因此看起来我们不需要修补所有主题。 这仅适用于Magento 1.8或更高版本。
尽管如此:应用补丁后,您是否遇到任何兼容性问题或错误?
/skin/adminhtml/default/default/media
-因为补丁无论如何都在做。
最新的Magento 1安全补丁SUPEE-8788包含17个APPSEC更新,因此尽快应用它非常重要。另一方面,存在许多潜在的向后兼容性中断,并且鉴于过去一年的补丁程序历史,我不会粗心地应用它。
好消息是这一次不涉及任何前端模板,因此看起来我们不需要修补所有主题。 这仅适用于Magento 1.8或更高版本。
尽管如此:应用补丁后,您是否遇到任何兼容性问题或错误?
/skin/adminhtml/default/default/media
-因为补丁无论如何都在做。
Answers:
请注意,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的补丁(请参见下文):
此新版本仅适用于Magento EE 1.13.0.x
应用V3:
应用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
用作上传块,而不使用模板。skin/adminhtml/default/default/media/flex.swf
,skin/adminhtml/default/default/media/uploader.swf
并且skin/adminhtml/default/default/media/uploaderSingle.swf
已被删除。getDeleteUrl
from的表单密钥进行保护Mage_Customer_Block_Address_Book
getRemoveUrl
从Mage_Wishlist_Helper_Data
CURLOPT_SSL_VERIFYHOST
设置为2(之前为0),并且CURLOPT_SSL_VERIFYPEER
标记现在已添加到cURL调用中。可以通过“启用SSL验证”下拉菜单中的付款方式配置来启用/禁用“验证对等方”标志。Mage_Http_Client_Curl
现在已CURLOPT_SSL_VERIFYPEER
设置为true(之前为false),请注意是否有使用它的自定义模块。getConfig()
从上载器块调用方法时向后不兼容的更改:安装SUPEE Patch 8788后在管理面板中出现问题Unsupported data type N
错误在/lib/Unserialize/Reader/ArrValue.php
应用补丁时1.9.1.0甚至更早的版本。在此处修复:https : //gist.github.com/balloz/ceaf5feb5ac66caaa82342441d32aa88Illegal Byte Sequence
:在OSX SUPEE-8788 -非法字节序列test_oauth.php
带有EE补丁的文件,请勿将该文件推送到产品中Enterprise_Pci
:https : //magento.stackexchange.com/a/140577/2380app/code/local
版本,Mage/Core/functions.php
则会遇到新hash_equals
功能的问题:https : //magento.stackexchange.com/a/140664/2380downloader/Maged/View.php
:安全修补程序SUPEE-8788在下载器/Maged/View.php(M1 v1.5.1.0)上失败downloader
文件夹:https : //magento.stackexchange.com/a/140631/2380编辑:由于列表越来越长,并且在该答案中几乎没有主题(与SUPEE-8788不相关),您可以参考此帖子以获取已知的1.9.3.0问题列表:https://magento.stackexchange。 com / a / 140826/2380
应用补丁程序时,可能会发生以下错误:
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文件作为文本处理)。
因此,解决方法是将补丁文件压缩/压缩并在服务器上再次解压缩/取消压缩。等。
对不起,我没有办法回答
skin / adminhtml / default / default / media / flex.swf skin / adminhtml / default / default / media / uploader.swf skin / adminhtml / default / default / media / uploaderSingle.swf
为我工作
如果您以前使用过SUPEE-1533,则修补程序将在 app/code/core/Mage/Adminhtml/controllers/DashboardController.php.
我通过...解决了
从SUPEE-8788删除更改是危险的,因为补丁文件包含二进制数据并将其保存在编辑器中可能会引起问题(另一个问题)。
这是到目前为止我(和其他人)遇到的问题的摘要,我正在尝试使其排序,可以随意添加或链接任何缺少的内容,该文章是Community Wiki:
如果看到“错误:无法成功应用/还原补丁”,请在日志消息中查找“ Hunk#1 FAILED”,以检查补丁失败的文件。
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
由于删除该目录而无法更新文件,则可以忽略该目录。
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
通过发行运行补丁
./PATCH_SUPEE-8788_CE_1.8.1.0_v1-2016-10-11-06-54-44.sh
那将修补您的文件
评论
_apply_revert_patch
到#_apply_revert_patch
再次运行补丁,添加
app/etc/app/etc/applied.patches.list
条目grep的所有.rej文件
git status | grep *.rej
手动进行这些更改
对于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.php
在code/local/Mage/core/functions.php
(如果你使用Fishpig扩展,这可能是这种情况)。看到@ClaudiuCreanga的答案
如果遇到这些问题中的任何一个,则可能使用该修补程序的版本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的回答
Mage_Checkout_CartController::updatePostAction
,也可能是其他补丁版本。
如果你得到
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;
}
}
在中PATCH_SUPEE-8788_EE_1.14.2.0_v1-2016-10-10-02-27-03.sh
,test_oauth.php
在Magento根目录中创建一个文件。您将要删除此代码(或至少不将其部署到生产环境中),因为它可能向调用URL https://thedomain.tld/test_oauth.php的人员暴露完整的异常堆栈跟踪。
此版本适用于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时出错
原始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更改。
有什么建议么?
DashboardController.php
应自动解决冲突。
git revert -n 123456ab
并git cherry-pick -n 123456ab
暂时将其撤消,而无需为其创建额外的提交。
有一半人打算将此帖子标记为主要基于观点或没有明确答案的;)
表单密钥已添加到几个控制器中,其数量取决于您的magento版本。
如果遇到麻烦
您需要检查主题.phtml
文件,并确保您正在检查POST
form 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() ?>" />
我在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文件时,同一文件将被损坏的原因。*
贴上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而中断。
执行补丁脚本时收到以下消息:
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”,正确应用了补丁,然后使用其秘密名称重命名了该补丁。
由于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
这就是我得到的
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
看起来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.9.1.0中的/lib/Unserialize/Reader/ArrValue.php中的消息“不受支持的数据类型N”为“异常”,并且可能为较早版本。在修补程序版本2中解决。
对于这些问题,目前没有已知的简便解决方法。我们正在努力以新的修补程序版本解决它们。
当您同时为样本和链接下载可下载产品的相同文件时,上传器中断。请注意,只有在两个区域中使用相同的文件时,才会发生这种情况。(它以前在补丁程序之前可以正常工作。)
要复制,请编辑可下载产品,然后单击“可下载信息”选项卡:
上载程序将上载示例文件而不是可下载链接文件,并且您在可下载链接部分中浏览的文件将消失。
我能够在1.7.0.2 CE补丁安装的原始版本上重现此内容。
是的,我在登录时确实遇到了其他问题,它将始终返回以下内容:
我发现这是因为在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()创建函数(因为我要确保所有开发人员都使用开发人员模式)。
如果任何人都必须编辑补丁文件,则不要在编辑器中进行编辑,因为这会破坏补丁中封装的二进制文件。
如果您有方便的命令行,即。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')?
<?=
并非所有的php配置都启用了它
<?=
在大多数php.ini配置中默认启用了此功能,但某些主机确实选择禁用它。
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
有点晚了,但我们发现补丁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>
对于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。
应用修补程序后,Authorize.net捕获中断。授权的效果很好,但是在获取付款发票时会显示“网关错误:需要信用卡号”。付款日志文件显示了x_type
参数auth_capture
现在可以传递值,但是在它过去用来传递的补丁之前prior_auth_capture
效果很好。有人遇到这个问题吗?
更新:修复此问题-Authorize.net无法捕获
我使用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的专家,所以我正在寻找解决方案。如果我发现我会发表,如果你们中的任何人有解决方案,那对我来说将非常有用
******* 我找到了解决方案 *******
我花了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
在运行1.9.2.1的站点的测试副本上应用了PATCH_SUPEE-8788_CE_1.9.2.1_v1-2016-10-11-07-00-43,它破坏了结帐。还原补丁程序,结帐将再次正常工作。
提交订单时,您将返回购物车,而不是结帐成功。认为我将在等待.1版本之前再试一次。
app/code/core/Mage/Core/Helper/UnserializeArray.php
了SUPEE-6788中添加的此文件,您可能尚未安装。看起来SUPEE-8788对SUPEE-6788具有未记录的依赖性。
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及以下版本推出的新版本之间。我已经与他们联系,所以我们将拭目以待。
我不是打补丁的忠实粉丝。我个人将所有Magento文件从其目录中删除,然后上传新版本(使用Shell脚本)。多年来安装的所有文件(如模块或主题)仍然存在。对于数据库,我在全新安装的版本之间进行了比较。一种方法是在数据库中创建或删除列/表,另一种方法是仅更改/app/etc/local.xml文件名再次安装Magento。我喜欢第一个。
如果不将数据库结构更改为1.9.3.0版,则会出现一些错误,或者无法加载管理区域。如果有人对Magento CE 1.9.2.4和1.9.3.0之间的Magento目录和数据库比较感兴趣,只需从此处下载文件:
有两个HTML文件,它们的视觉效果非常好。
我今天用我的方法而不是打补丁更新了4家商店。一切都运行没有任何问题。
大多数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列表中应用的补丁
没有意义。
我今天修补了大约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正确打了补丁。