Na stronie pobierania Magento , w sekcji łatek
Prześlij łatkę do katalogu głównego Magento i uruchom odpowiednią komendę SSH: W przypadku plików łat z rozszerzeniem `.sh: sh nazwa_pliku_ łatki.sh Przykład: sh PATCH_SUPEE-1868_CE_1.7.0.2_v1.sh
Magento zaleca bezpośrednie wywołanie tego sh
polecenia, aby uruchomić ich program uruchamiający poprawki. .sh
Obsługuje to także rozszerzenie pliku .
Jeśli jednak spojrzysz na górę każdego pliku programu uruchamiającego poprawki , linia shebang wskazuje bash
.
#!/bin/bash
# Patch apllying tool template
# v0.1.2
# (c) Copyright 2013. Magento Inc.
#
Programiści we mnie chcą zaufać plikowi źródłowemu, ale proces nie chce słuchać tego, co jest napisane na stronie Magento, cynik zastanawia się, czy łatka została przetestowana pod kątem różnic między bash a sh .
REQUIRED_UTILS='sed patch'
wszystko co widzę w.sh
skryptach. Dokumenty dotyczące aktualizacji najnowszych wersji brzmią jak instrukcje stereo, a aktualizacja nie powinna być tak bolesna.Odpowiedzi:
Właściwie musisz użyć bash. W linii 14 łaty, którą wyraźnie wskazałeś, jest ten kod:
$((
jest poprawnym wyrażeniem arytmetycznym w XCU sh, ale((
nie jest.)Jednak na wielu platformach typu UNIX
/bin/sh
jest tylko dowiązaniem symbolicznym/bin/bash
. Po wywołaniu z nazwąsh
, bash wyłącza niektóre z jej POSIXly-nieograniczonego zachowania, ale nie wszystkie. Jest prawdopodobne, że te łatki będą działały dobrze dla bash wywołanego jako sh.źródło
chmod +x script && ./script
jądro spróbuje wykonać polecenie w wierszu shebang z plikiem skryptu jako pierwszym lub drugim argumentem. W zależności od okoliczności nie ma gwarancji, że jakakolwiek powłoka jest zaangażowana w to drzewo procesów. Jeśli jednak wykonaszsh
skrypt jako argument, linia shebang zostanie zignorowana.Na wypadek, gdyby komuś to pomogło w przyszłości, użyłem Phpstorma do nałożenia łaty, a jej narzędzie jest świetne. Zastosowanie łatki zajęło mniej niż 30 sekund bez żadnych problemów, a także możesz zobaczyć i przejrzeć różnice między plikami.
źródło