为什么PATCH_SUPEE-6788对1.7.0.2安装似乎无效?


21

注意: 此问题似乎适用于已收到SUPEE-6788补丁的所有Magento版本。您会在我的答案中看到这两者, .htaccess并且都.htaccess.sample需要还原才能使补丁成功。


我正在使用提供的shell脚本应用SUPEE-6788补丁到CE 1.7.0.2网站magentocommerce.com/downloads。该站点已应用了所有以前的安全补丁。

脚本的名称是PATCH_SUPEE-6788_CE_1.7.0.2_v1-2015-10-27-12-00-16.sh且具有md5sum cfc0cf533fe36a5f573414f0feeb1590(此修补程序是不寻常的,因为它未经压缩就被释放了-尽管该文件未显示损坏或被截断)。

运行此脚本时,控制台输出似乎表明所包含的补丁程序中至少有一个失败或被跳过,但是补丁程序的许多部分均已成功执行,但是git未显示任何更改。该脚本已在具有相同代码库的两个不同环境中进行了测试-一个是Ubuntu GNOME 14.04 LTS工作站,另一个是nexcess.com共享服务器(运行CentOS)。

有趣的是,两种环境的输出略有不同。注意以“ checking”和“ patching”开头的行。

Ubuntu环境的输出示例:

bash PATCH_SUPEE-6788_CE_1.7.0.2_v1-2015-10-27-12-00-16.sh                                              [19:27:10]
Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

checking file .htaccess
Hunk #1 FAILED at 207.
1 out of 1 hunk FAILED
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git .htaccess.sample .htaccess.sample
|index 546f18e..3e79c77 100644
|--- .htaccess.sample
|+++ .htaccess.sample
--------------------------
File to patch: 
Skip this patch? [y] 
Skipping patch.
1 out of 1 hunk ignored
checking file app/code/core/Mage/Admin/Model/Block.php
checking file app/code/core/Mage/Admin/Model/Resource/Block.php
checking file app/code/core/Mage/Admin/Model/Resource/Block/Collection.php
checking file app/code/core/Mage/Admin/Model/Resource/Variable.php
checking file app/code/core/Mage/Admin/Model/Resource/Variable/Collection.php
checking file app/code/core/Mage/Admin/Model/Variable.php
...

来自CentOS环境的样本:

bash PATCH_SUPEE-6788_CE_1.7.0.2_v1-2015-10-27-12-00-16.sh 
Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

patching file .htaccess
Hunk #1 FAILED at 207.
1 out of 1 hunk FAILED -- saving rejects to file .htaccess.rej
can't find file to patch at input line 38
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git .htaccess.sample .htaccess.sample
|index 546f18e..3e79c77 100644
|--- .htaccess.sample
|+++ .htaccess.sample
--------------------------
File to patch: 
Skip this patch? [y] 
Skipping patch.
1 out of 1 hunk ignored
patching file app/code/core/Mage/Admin/Model/Block.php
patching file app/code/core/Mage/Admin/Model/Resource/Block.php
patching file app/code/core/Mage/Admin/Model/Resource/Block/Collection.php
patching file app/code/core/Mage/Admin/Model/Resource/Variable.php
...

我将在输出的顶部挖掘错误,并可能手动应用补丁程序,但希望有人可能对原因或相对简单的修复有所了解。


我已经尝试了上述所有解决方案。但是我仍然无法成功应用补丁6788。有人可以帮忙吗?谢谢。
2016年

症状是否相同?如果不是,您可能应该问一个关于您问题的细节的新问题
STW

使用Magento库存安装文件。然后,确保.htaccess-File在文件末尾恰好有1个空换行符#FileETag none。并且.htaccess.sample文件末尾必须有2个空换行符。
pbaldauf

Answers:


15

罪魁祸首似乎是我的变化.htaccess以及失踪.htaccess.sample的原因。恢复两个文件的库存副本(都需要)后,该补丁程序似乎可以成功应用。

为了解决这个问题,在不丢失(所需)修改的情况下,我执行了以下步骤:

  1. 创建的备份.htaccess.htaccess.sample-或者你的版本控制系统或复制文件

  2. 复制一个股票1.7.0.2版.htaccess.htaccess.sample到我的代码库,更换我的个性.htaccess

  3. 应用了补丁。输出比以前(2行)短得多。

  4. 承诺进行所有更改,包括.htaccess(后代)

  5. 检出先前版本的.htaccess,没有修补程序,然后将修补程序手动应用到该文件。

这是git diff补丁的,显示了添加的行:

diff --git a/.htaccess b/.htaccess
index 60e1795..aca7f55 100644
--- a/.htaccess
+++ b/.htaccess
@@ -207,3 +207,28 @@
 ## http://developer.yahoo.com/performance/rules.html#etags

     #FileETag none
+
+###########################################
+## Deny access to cron.php
+    <Files cron.php>
+
+############################################
+## uncomment next lines to enable cron access with base HTTP authorization
+## http://httpd.apache.org/docs/2.2/howto/auth.html
+##
+## Warning: .htpasswd file should be placed somewhere not accessible from the web.
+## This is so that folks cannot download the password file.
+## For example, if your documents are served out of /usr/local/apache/htdocs
+## you might want to put the password file(s) in /usr/local/apache/.
+
+        #AuthName "Cron auth"
+        #AuthUserFile ../.htpasswd
+        #AuthType basic
+        #Require valid-user
+
+############################################
+
+        Order allow,deny
+        Deny from all
+
+    </Files>

注意:如果遇到类似问题,但不能解决问题,则可能错过了以前的安全补丁。检查app/etc/applied.patches.list和/或使用magereport.com/scan验证是否已应用所有以前的安全补丁&ndash; **它们是必需的**
STW 2015年

我为我工作
jruzafa 2015年

这是什么意思?Warning: .htpasswd file should be placed somewhere not accessible from the web任何的想法?
阿达什·哈特里

4

我尝试下载的库存版本,.htaccess并且.htaccess.sample即使使用了库存版本,该修补程序仍然不适用。

对于其他任何遇到此问题的人,请查看此文章,它说明了如何从补丁本身中删除.htaccesshtaccess.sample部分,然后在之后手动将其添加:http : //www.atwix.com/magento/security-patch-supee-6788 -安装问题/

FIX -通过消除线路163-195开始与线编辑补丁文件

diff --git .htaccess .htaccess 

并以

+    </Files>

您可能还需要删除与htaccess.sample此相关的部分

diff --git .htaccess.sample .htaccess.sample

并结束于

+    </Files>

完成此操作后,请尝试再次应用补丁程序,这次应该可以成功应用。

接下来,我们需要在.htaccess.htaccess.sample文件的末尾添加以下内容,以便根据补丁更新它们

###########################################
## Deny access to cron.php
    <Files cron.php>

############################################
## uncomment next lines to enable cron access with base HTTP authorization
## http://httpd.apache.org/docs/2.2/howto/auth.html
##
## Warning: .htpasswd file should be placed somewhere not accessible from the web.
## This is so that folks cannot download the password file.
## For example, if your documents are served out of /usr/local/apache/htdocs
## you might want to put the password file(s) in /usr/local/apache/.

        #AuthName "Cron auth"
        #AuthUserFile ../.htpasswd
        #AuthType basic
        #Require valid-user

############################################

        Order allow,deny
        Deny from all

    </Files>

按照这些步骤,我能够成功应用补丁程序,希望对您有所帮助!


1
我已经更新了原始帖子以包含此修复程序,请您解释一下为什么我在这个问题上停留了几个小时才被否决,直到找到发布的修复程序,我希望它可以帮助其他人解决这个问题。
James Collins


0

我遇到了同样的问题,这是因为我下载了错误的补丁程序。我正在使用Magento EE 1.13,并且已经下载了CE修补程序...在遵循教程的同时下载了CE 1.8修补程序,认为它适用于EE 1.13。确保您下载了适用于您的Magento版本的补丁。


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.