2013-12-13 37 views
5

następujących kierunkach, słowo w słowo ...Magento 1.7.2 poprawka zabezpieczeń ERROR poprzez 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 

Przesłałem plik poprawki PATCH_SUPEE-2518_CE_1.5.1.0-1.7.0.2_v1.sh

Do katalogu głównego magento (public_html /) i Otrzymuj ten błąd przy wykonywaniu.

[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() { 

Linia 9 w .sh łatce jest

_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 

nie widzę błąd w tym pliku, lub zrozumieć, co jest przyczyną tego, by upaść. Ktoś inny ma ten problem lub wie coś na ten temat?

Całe .SH zawartość pliku

#!/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

Link do pliku łatki pomógłby ludziom w debugowaniu tego. –

+0

Alan, zaktualizowałem treść pliku na pytanie, dziękuję, proszę pana! –

+0

Prawdopodobnie interesuje Cię - możesz potrzebować uruchomić tę poprawkę z bash zamiast sh. http://magento.stackexchange.com/questions/13644/applying-magento-ce-patches –

Odpowiedz

1

spróbuj utworzyć nowy plik tekstowy, na przykład, mypatch.patch i kopiować dyferencjału z patchem do niego

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; 
       } 
      } 

Następnie skopiuj go do katalogu głównego sklepu i zrobić:

patch -p0 < mypatch.patch 

OR można próbować zmienić

_check_installed_tools() { 

do

function _check_installed_tools { 

w scenariuszu bazowym

0

należy zainstalować poprawkę spróbuj tego: yum install łata

+1

Dokumentacja ... Przykłady? –

+0

to zadziałało dla mnie – MatteoSp

-1

idź do Magento miejscu pobrania łatki. Po kliknięciu przycisku pobierania na stronie magento otworzy się nowa strona z kodem poprawki. kliknij prawym na niego i wybrać widok kodu źródłowego (z chromem)

view-source: http://www.magentocommerce.com/index.php/getmagento/ce_patches/PATCH_SUPEE-2629_EE_1.12.0.0_v1.sh

następnie kliknij prawym ponownie i zapisz plik jako przykład PATCH_SUPEE-2629_EE_1.12.0.0_v1.sh. Na koniec przenieś plik do katalogu głównego twojej instalacji magento i spróbuj ponownie zastosować poprawkę. Dla mnie to działa.

5

wpadłem na ten sam błąd:

[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") 

Kiedy sprawdziliśmy to w vim, widziałem, że został zakodowany w systemie DOS. Uruchomiono dos2unix i łatkę zainstalowaną pomyślnie:

[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

Napotkałem ten sam błąd. Naprawiłem to instalując "Patch". O dziwo, przyszedłem do tego wątku po odpowiedzi i wypróbowałem je wszystkie, z wyjątkiem sugestii @hisis. Źle zinterpretowałem jego rozwiązanie, próbując uruchomić "yum patch_name.sh"

W końcu spojrzałem na plik, a potem jego rozwiązanie było dość oczywiste. Po zainstalowaniu "Patch" ponownie uruchom skrypt i uruchom!:)

yum install patch 

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

to jest poprawna odpowiedź i poprawnie napisana. – Jon

0

Okazało się, że ten błąd występuje, gdy plik poprawki (plik nie jest załatana) ma zakończeń linii, które nie pasują do systemu, w którym jest on prowadzony.

np:

  • Używasz na Linuksie
  • plik
  • Łatka ma zakończeń linii Okna

Następnie trzeba sprawdzić, czy plik jest połatany ma też końca linii dla systemu na którym jest uruchamiany

Zobacz także Error patching Magento 1.7.1 Hunk #1 Failed at