我在本地计算机上使用 Windows。服务器当然是Linux。我使用 Git 进行版本控制。
长话短说:尝试使用dos2unix
尝试使 .php 文件的行结尾与 .sh 补丁文件匹配的实用程序。 (我认为您还可以在 .sh 文件上运行 dos2unix 或在 .sh 文件上运行 unix2dos - 一些组合以使它们相同)。
虽然我认为你的错误消息看起来与我的有点不同。事实上,你看过“拒绝文件”吗?如果这不是行结束故障,您能想到 1.6 和 1.7 安装之间有什么不同吗? (我已经使用我在此处描述的方法修补了 1.7.0.2 和 1.9.0.1)。如果您检查 Graph.php 文件,其中是否有任何编辑?
以下是对我有用的更多信息:
我使用 Cygwin (Gitbash 似乎在 Linux 与 Windows 文件路径上遇到了困难,并给出了错误/app/etc must exist
)。另外,我必须以管理员身份运行 Cygwin 来解决文件权限错误(这很奇怪,可能对我的设置来说是独一无二的)。
但我需要做的主要事情是跑步dos2unix
在补丁试图修复的文件上diff
。我通过编辑 .sh 补丁文件来完成此操作,您可以在文件末尾看到其中包含将更改的文件的路径。
所以我编辑了 .sh 文件,在第 66 行注释之前添加了这两行# 5. File pathes
:-
# extra steps for windows CRLF:
dos2unix app/code/core/Mage/Adminhtml/Block/Dashboard/Graph.php
dos2unix app/code/core/Mage/Adminhtml/controllers/DashboardController.php
您可能需要考虑 B 计划并手动编辑文件;没有那么多变化。
不过,补丁 5344 确实还有一些更改。对于这一点,我在评论之前添加了这些行# 5. File pathes
在文件中PATCH_SUPEE-5345_CE_1.7.0.2_v1-2015-02-10-08-11-22.sh
:-
# extra steps for windows CRLF:
dos2unix lib/Varien/Db/Adapter/Pdo/Mysql.php
dos2unix app/code/core/Mage/XmlConnect/Model/Observer.php
dos2unix app/code/core/Mage/Oauth/controllers/Adminhtml/Oauth/AuthorizeController.php
dos2unix app/code/core/Mage/Core/Controller/Request/Http.php
dos2unix app/code/core/Mage/Admin/Model/Observer.php
这对我有用。我阅读了一些 Stack Overflow 答案来提出这个解决方案。看来“patch”命令对行结尾非常敏感。您可能尝试的另一件事是将 -w 标志添加到 diff 命令中(再次通过编辑 .sh 文件),这应该会使 diff 忽略行首和行尾的空格,但它对我不起作用。http://unixhelp.ed.ac.uk/CGI/man-cgi?diff
作为最后一个问题,我会注意到我需要添加patch
通过重新运行 Cygwin 向 Cygwin 命令setup-x86.exe
“安装或更新”程序添加到包含以下内容的开发包中patch
.