Magento CSS i JavaScript nie ładują się z powodu użycia ścieżki systemu plików

29

Nie mogłem zainstalować modułu za pomocą Magento Connect, pojawia się Connection Error try again laterbłąd. Postępując zgodnie z instrukcjami programisty modułu, próbowałem naprawić uprawnienia w katalogu głównym dokumentu za pomocą:

find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
chmod o+w var var/.htaccess app/etc
chmod 550 mage
chmod -R o+w media

Nadal nie działało, więc zakończyłem instalację modułu ręcznie. Następnie zalogowałem się do backendu administratora i Magento próbował udostępnić pliki CSS przy użyciu ścieżek plików systemowych zamiast adresów URL w następujący sposób:

<link rel="stylesheet" type="text/css" href="/home/user/public_html/js/calendar/calendar-win2k-1.css" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/reset.css" media="all" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/boxes.css" media="all" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/custom.css" media="all" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/xmlconnect/boxes.css" media="all" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/print.css" media="print" />
<link rel="stylesheet" type="text/css" href="/home/user/public_html/skin/adminhtml/default/default/menu.css" media="screen, projection" />

Natychmiast usunąłem rozszerzenie i próbowałem dopasować perms z innego serwera z działającym Magento bezskutecznie. Mam również:

  • Wyczyszczono pamięć podręczną lokalną, APC i Magento
  • Sprawdzone w dziennikach błędów (rejestrowanie jest włączone)
  • dwukrotnie sprawdzono poprawne wartości web / unsecure / base_url i web / secure / base_url w DB
  • Zrestartowano, 3 razy;)

Minify nie jest używane. Scalanie plików CSS jest włączone, jednak nie mogę wymyślić, jak je wyłączyć bez interfejsu administratora (zapisywanie i nawigacja nie działają, nawet jeśli zastąpię prawidłowe wartości Firebug). Wszelkie pomysły będą mile widziane!

(Pytanie pierwotnie opublikowane przez @reflexiv w sprawie przepełnienia stosu )

Navarr
źródło
Włącz dziennik wyjątków i sprawdź, czy wszystkie pliki istnieją.
joseantgv

Odpowiedzi:

42

Magento używający adresów URL pełnej ścieżki do dostępu do plików CSS jest częstym błędem wynikającym z dwóch rzeczy:

  • Po włączeniu scalania plików CSS
  • Magento nie może odczytać / zapisać w folderze media /.

Aby rozwiązać ten problem, upewnij się, że:

  • Media / folder istnieje w twojej instalacji Magento.
  • Media / folder jest zapisywalny przez twój serwer WWW.

Jak @flochtililoch opublikował na Stack Exchange :

Powinieneś sprawdzić, czy apache rzeczywiście posiada katalog multimediów , najpierw sprawdzając, który apache użytkownika działa jako , a następnie odpowiednio dostosowując uprawnienia:

chown -R <apache_user> media
chmod -R ug+w media

Więcej informacji tutaj: Uprawnienia do systemu plików Magento

Navarr
źródło
Miałem ten sam problem, ponieważ włączono scalanie CSS / JS.
DmitryR
1
@DmitryR: Włączenie scalania nie stanowi problemu, problemem jest brak możliwości zapisu na serwerze przez serwer WWW. Próbuje to zrobić, gdy scalanie jest włączone, nie powiedzie się, a to spowoduje. ;)
Navarr
Ma to poważny błąd: nie tylko sprawia, że ​​folder jest zapisywalny przez użytkownika apache, ale sprawia, że ​​folder może być zapisywany przez wszystkich . NIE RÓB TEGO. Otwiera ogromną lukę bezpieczeństwa.
Michael Hampton
Dobra decyzja. Zaktualizowałem go do wersji ug + w zamiast o + w
Navarr
3

Właśnie napotkałem bardzo podobny problem podczas kopiowania strony z serwera na żywo na lokalny serwer apache dev (MAMP). Dla mnie to rozwiązało:

  1. usuwanie media/cssi media/jswszystkich plików
  2. W core_config_dataustawieniach tabeli bazy danych :
    dev/js/merge_filesna 0 (było 1)
    dev/css/merge_css_filesna 0 (było 1)
  3. clearing var/cache

Ponownie załadowane pliki front i backend, a teraz pliki css / js są obsługiwane poprawnie.

Freshwebs
źródło