2013-12-13 26 views
5

以下方向字...Magento的1.7.2安全修補程序錯誤經由字SSH

Please upload the patch into your Magento root directory and run the appropriate SSH command: 
For patch files with the file extension .sh: 
sh patch_file_name.sh 
Example: sh PATCH_SUPEE-1868_CE_1.7.0.2_v1.sh 

我已經上傳了補丁文件 PATCH_SUPEE-2518_CE_1.5.1.0-1.7.0.2_v1.sh

到magento根目錄(public_html /)並在執行時收到此錯誤。

[email protected] [/home/public_html/]# sh PATCH_SUPEE-2518_CE_1.5.1.0-1.7.0.2_v1.sh 
: command not found_1.5.1.0-1.7.0.2_v1.sh: line 7: 
'ATCH_SUPEE-2518_CE_1.5.1.0-1.7.0.2_v1.sh: line 9: syntax error near unexpected token `{ 
'ATCH_SUPEE-2518_CE_1.5.1.0-1.7.0.2_v1.sh: line 9: `_check_installed_tools() { 

在.SH補丁文件9號線是

_check_installed_tools() { 
local missed="" 

until [ -z "$1" ]; do 
    type -t $1 >/dev/null 2>/dev/null 
    if (($? != 0)); then 
     missed="$missed $1" 
    fi 
    shift 
done 

echo $missed 

我看不到這個文件中的錯誤,或者明白是什麼原因造成這種失敗。任何其他人都有這個問題,或知道任何有關它?

整個sh文件內容

#!/bin/bash 
# Patch apllying tool template 
# v0.1.2 
# (c) Copyright 2013. Magento Inc. 
# 
# DO NOT CHANGE ANY LINE IN THIS FILE. 

# 1. Check required system tools 
_check_installed_tools() { 
    local missed="" 

    until [ -z "$1" ]; do 
     type -t $1 >/dev/null 2>/dev/null 
     if (($? != 0)); then 
      missed="$missed $1" 
     fi 
     shift 
    done 

    echo $missed 
} 

REQUIRED_UTILS='sed patch' 
MISSED_REQUIRED_TOOLS=`_check_installed_tools $REQUIRED_UTILS` 
if ((`echo $MISSED_REQUIRED_TOOLS | wc -w` > 0)); 
then 
    echo -e "Error! Some required system tools, that are utilized in this sh script, are not installed:\nTool(s) \"$MISSED_REQUIRED_TOOLS\" is(are) missed, please install it(them)." 
    exit 1 
fi 

# 2. Determine bin path for system tools 
CAT_BIN=`which cat` 
PATCH_BIN=`which patch` 
SED_BIN=`which sed` 
PWD_BIN=`which pwd` 
BASENAME_BIN=`which basename` 

BASE_NAME=`$BASENAME_BIN "$0"` 

# 3. Help menu 
if [ "$1" = "-?" -o "$1" = "-h" -o "$1" = "--help" ] 
then 
    $CAT_BIN << EOFH 
Usage: sh $BASE_NAME [--help] [-R|--revert] [--list] 
Apply embedded patch. 

-R, --revert Revert previously applied embedded patch 
--list   Show list of applied patches 
--help   Show this help message 
EOFH 
    exit 0 
fi 

# 4. Get "revert" flag and "list applied patches" flag 
REVERT_FLAG= 
SHOW_APPLIED_LIST=0 
if [ "$1" = "-R" -o "$1" = "--revert" ] 
then 
    REVERT_FLAG=-R 
fi 
if [ "$1" = "--list" ] 
then 
    SHOW_APPLIED_LIST=1 
fi 

# 5. File pathes 
CURRENT_DIR=`$PWD_BIN`/ 
APP_ETC_DIR=`echo "$CURRENT_DIR""app/etc/"` 
APPLIED_PATCHES_LIST_FILE=`echo "$APP_ETC_DIR""applied.patches.list"` 

# 6. Show applied patches list if requested 
if [ "$SHOW_APPLIED_LIST" -eq 1 ] ; then 
    echo -e "Applied/reverted patches list:" 
    if [ -e "$APPLIED_PATCHES_LIST_FILE" ] 
    then 
     if [ ! -r "$APPLIED_PATCHES_LIST_FILE" ] 
     then 
      echo "ERROR: \"$APPLIED_PATCHES_LIST_FILE\" must be readable so applied patches list can be shown." 
      exit 1 
     else 
      $SED_BIN -n "/SUP-\|SUPEE-/p" $APPLIED_PATCHES_LIST_FILE 
     fi 
    else 
     echo "<empty>" 
    fi 
    exit 0 
fi 

# 7. Check applied patches track file and its directory 
_check_files() { 
    if [ ! -e "$APP_ETC_DIR" ] 
    then 
     echo "ERROR: \"$APP_ETC_DIR\" must exist for proper tool work." 
     exit 1 
    fi 

    if [ ! -w "$APP_ETC_DIR" ] 
    then 
     echo "ERROR: \"$APP_ETC_DIR\" must be writeable for proper tool work." 
     exit 1 
    fi 

    if [ -e "$APPLIED_PATCHES_LIST_FILE" ] 
    then 
     if [ ! -w "$APPLIED_PATCHES_LIST_FILE" ] 
     then 
      echo "ERROR: \"$APPLIED_PATCHES_LIST_FILE\" must be writeable for proper tool work." 
      exit 1 
     fi 
    fi 
} 

_check_files 

# 8. Apply/revert patch 
# Note: there is no need to check files permissions for files to be patched. 
# "patch" tool will not modify any file if there is not enough permissions for all files to be modified. 
# Get start points for additional information and patch data 
SKIP_LINES=$((`$SED_BIN -n "/^__PATCHFILE_FOLLOWS__$/=" "$CURRENT_DIR""$BASE_NAME"` + 1)) 
ADDITIONAL_INFO_LINE=$(($SKIP_LINES - 3))p 

_apply_revert_patch() { 
    DRY_RUN_FLAG= 
    if [ "$1" = "dry-run" ] 
    then 
     DRY_RUN_FLAG=" --dry-run" 
     echo "Checking if patch can be applied/reverted successfully..." 
    fi 
    PATCH_APPLY_REVERT_RESULT=`$SED_BIN -e '1,/^__PATCHFILE_FOLLOWS__$/d' "$CURRENT_DIR""$BASE_NAME" | $PATCH_BIN $DRY_RUN_FLAG $REVERT_FLAG -p0` 
    PATCH_APPLY_REVERT_STATUS=$? 
    if [ $PATCH_APPLY_REVERT_STATUS -eq 1 ] ; then 
     echo -e "ERROR: Patch can't be applied/reverted successfully.\n\n$PATCH_APPLY_REVERT_RESULT" 
     exit 1 
    fi 
    if [ $PATCH_APPLY_REVERT_STATUS -eq 2 ] ; then 
     echo -e "ERROR: Patch can't be applied/reverted successfully." 
     exit 2 
    fi 
} 

REVERTED_PATCH_MARK= 
if [ -n "$REVERT_FLAG" ] 
then 
    REVERTED_PATCH_MARK=" | REVERTED" 
fi 

_apply_revert_patch dry-run 
_apply_revert_patch 

# 9. Track patch applying result 
echo "Patch was applied/reverted successfully." 
ADDITIONAL_INFO=`$SED_BIN -n ""$ADDITIONAL_INFO_LINE"" "$CURRENT_DIR""$BASE_NAME"` 
APPLIED_REVERTED_ON_DATE=`date -u +"%F %T UTC"` 
APPLIED_REVERTED_PATCH_INFO=`echo -n "$APPLIED_REVERTED_ON_DATE"" | ""$ADDITIONAL_INFO""$REVERTED_PATCH_MARK"` 
echo -e "$APPLIED_REVERTED_PATCH_INFO\n$PATCH_APPLY_REVERT_RESULT\n\n" >> "$APPLIED_PATCHES_LIST_FILE" 

exit 0 


SUPEE-2518 | CE_1.7.0.2 | v1 | e6f2d2354843b1ca69988a44de1761ce180e746c | Thu Nov 21 12:44:53 2013 +0200 | v1.7.0.2..SUPEE-2518 

__PATCHFILE_FOLLOWS__ 
diff --git app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php 
index 9e8d6be..b106d09 100644 
--- app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php 
+++ app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php 
@@ -197,11 +197,11 @@ class Mage_Cms_Helper_Wysiwyg_Images extends Mage_Core_Helper_Abstract 
    public function getCurrentPath() 
    { 
     if (!$this->_currentPath) { 
-   $currentPath = $this->getStorageRoot(); 
-   $path = $this->_getRequest()->getParam($this->getTreeNodeName()); 
-   if ($path) { 
-    $path = $this->convertIdToPath($path); 
-    if (is_dir($path)) { 
+   $currentPath = realpath($this->getStorageRoot()); 
+   $node = $this->_getRequest()->getParam($this->getTreeNodeName()); 
+   if ($node) { 
+    $path = realpath($this->convertIdToPath($node)); 
+    if (is_dir($path) && false !== stripos($path, $currentPath)) { 
        $currentPath = $path; 
       } 
      } 
+0

鏈接到補丁文件將幫助人們幫助調試。 –

+0

艾倫,我已經更新了文件的內容到這個問題,謝謝先生! –

+0

可能感興趣 - 您可能需要使用bash而不是sh運行該補丁。 http://magento.stackexchange.com/questions/13644/applying-magento-ce-patches –

回答

1

嘗試創建新的文本文件,例如,mypatch.patch和補丁複製的diff它

diff --git app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php 
index 9e8d6be..b106d09 100644 
--- app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php 
+++ app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php 
@@ -197,11 +197,11 @@ class Mage_Cms_Helper_Wysiwyg_Images extends Mage_Core_Helper_Abstract 
    public function getCurrentPath() 
    { 
     if (!$this->_currentPath) { 
-   $currentPath = $this->getStorageRoot(); 
-   $path = $this->_getRequest()->getParam($this->getTreeNodeName()); 
-   if ($path) { 
-    $path = $this->convertIdToPath($path); 
-    if (is_dir($path)) { 
+   $currentPath = realpath($this->getStorageRoot()); 
+   $node = $this->_getRequest()->getParam($this->getTreeNodeName()); 
+   if ($node) { 
+    $path = realpath($this->convertIdToPath($node)); 
+    if (is_dir($path) && false !== stripos($path, $currentPath)) { 
        $currentPath = $path; 
       } 
      } 

然後將其複製到你的店的根做:

patch -p0 < mypatch.patch 

,或者可以嘗試改變

_check_installed_tools() { 

function _check_installed_tools { 

在基地腳本

0

必須安裝補丁 試試這個: 百勝安裝補丁

+1

Documentation ...範例? –

+0

這工作對我來說 – MatteoSp

-1

轉到Magento的下載補丁的網站。當你點擊magento站點上的下載按鈕時,它將打開一個帶有補丁碼的新站點。使得它右鍵,選擇查看源代碼(鉻)

查看源代碼:http://www.magentocommerce.com/index.php/getmagento/ce_patches/PATCH_SUPEE-2629_EE_1.12.0.0_v1.sh

然後請右鍵單擊再次,保存文件作爲例如PATCH_SUPEE-2629_EE_1.12.0.0_v1.sh。 最後將文件移動到您的magento安裝的根目錄並嘗試再次應用該修補程序。對我來說它有效。

5

我碰到了同樣的錯誤:

[email protected]:/www/sites/REDACTED/files/html# sh PATCH_SUPEE-2518_EE_1.10.1.0-1.13.0.2_v1.sh 
: not found-2518_EE_1.10.1.0-1.13.0.2_v1.sh: 7: 
: not found-2518_EE_1.10.1.0-1.13.0.2_v1.sh: 11: 
PATCH_SUPEE-2518_EE_1.10.1.0-1.13.0.2_v1.sh: 168: Syntax error: "(" unexpected (expecting "then") 

當我檢查出來的VIM,我看到它是在DOS編碼。冉dos2unix上它和修補程序安裝成功:

[email protected]:/www/sites/REDACTED/files/html# dos2unix PATCH_SUPEE-2518_EE_1.10.1.0-1.13.0.2_v1.sh 
dos2unix: converting file PATCH_SUPEE-2518_EE_1.10.1.0-1.13.0.2_v1.sh to UNIX format ... 
[email protected]:/www/sites/REDACTED/files/html# bash PATCH_SUPEE-2518_EE_1.10.1.0-1.13.0.2_v1.sh 
Checking if patch can be applied/reverted successfully... 
Patch was applied/reverted successfully. 
4

我遇到了同樣的錯誤。我通過安裝「Patch」來修復它。奇怪的是,我來到這個線索的答案,並嘗試除了@哈迪斯的建議之外。我誤解了他的解決方法,試圖運行「yum patch_name.sh」

我最終看了一下文件,之後他的解決方案非常明顯。一旦安裝了「Patch」,再次執行腳本,瞧!:)

yum install patch 

sh PATCH_SUPEE-1868_CE_1.7.0.2_v1.sh 
+1

這是正確的答案,並正確書寫。 – Jon

0

我發現,補丁文件(而不是文件打補丁)時出現此錯誤有不其所運行的系統匹配行尾。

如:

  • 你是在Linux上運行
  • 補丁文件具有Windows行結尾

然後,你需要檢查該文件打補丁也有對系統行結束在其上運行

另請參見Error patching Magento 1.7.1 Hunk #1 Failed at

相關問題