Przesyłanie obrazu Magento nie działa nawet po udzieleniu wszystkim folderom uprawnień 777

9

Nie mogę przesłać zdjęć w panelu administracyjnym Magento, pojawia się błąd „Folder docelowy nie jest zapisywalny lub nie istnieje”. Ostatnio przeniesiono wszystkie pliki z jednego hosta na inny. Jakieś rozwiązanie tego?

użytkownik3164549
źródło
Jakiego rodzaju pakiet hostingowy posiadasz? Jeśli zawiera wsparcie, warto zapytać ich o aktualne uprawnienia.
David Manners
Mamy dwie witryny hostowane na tym samym serwerze i mamy wszystkie uprawnienia do przesyłania pliku, a nawet jeśli pliki nie są przesyłane
użytkownik3164549

Odpowiedzi:

16

W swoim projekcie otwórz plik lib/Varien/File/Uploader.phpi umieść Mage::log()wewnątrz save()funkcji.

public function save($destinationFolder, $newFileName = null)
{
    $this->_validateFile();

    if ($this->_allowCreateFolders) {
        $this->_createDestinationFolder($destinationFolder);
    }

    if (!is_writable($destinationFolder)) {
        // Put a mage::log() and check what is the folder magento is looking for.
        Mage::log($destinationFolder);
        throw new Exception('Destination folder is not writable or does not exists.');
    }
    ...
}

Z dziennika możesz znaleźć folder, którego szuka Magento. A następnie sprawdź uprawnienia do tego folderu.

Sukeshini
źródło
5
Dziękuję bardzo, że zapomniałem udzielić zgody na plik Media / tmp / category / product, a po udzieleniu zgody na plik do tego folderu problem został rozwiązany
użytkownik3164549
2
Cieszę się, że Twój problem został rozwiązany. Jeśli pomogło to rozwiązać problem, zaznacz go jako odpowiedź.
Sukeshini,
5

Magento 2

Otrzymuję ten sam błąd na Magento 2, i jest to plik, z którego pochodzi błąd w tym przypadku:

vendor/magento/framework/File/Uploader.php

W linii 256możesz tymczasowo umieścić ten kod, aby uzyskać nieusuwalny / nieistniejący folder:

if( !is_writable($destinationFolder) ) {
    // throw new Exception('Destination folder is not writable or does not exists.');
    throw new Exception($destinationFolder);
} 

W przeciwnym razie sprawdź, czy te foldery istnieją i czy serwer WWW je zapisuje:

  • pub/media/catalog/
  • pub/media/catalog/category
  • pub/media/catalog/product
  • pub/media/images
  • pub/media/wysiwyg/
Andrea
źródło
3

Dla mnie problem został rozwiązany przez zrobienie

pub / media / tmp

zapisywalny przez serwer WWW

Kolejne foldery w katalogu „pub / media” również są zapisywalne

- banners
- catalog
- images
- wysiwyg
Eliut Islas
źródło
3

Na ile warto, miałem ten problem kilka razy i zapomniałem, że zwykle jest to sam plik obrazu, a nie serwer po sprawdzeniu uprawnień i tak dalej. Nadal nie przesłał obrazu, ponieważ był zbyt duży, zarówno pod względem wymiarów, jak i rozmiaru pliku.

Rozwiązania dla mnie to:

  • Przed przesłaniem zmniejsz zdjęcie HIGH-REZ.

  • Zwiększ magento Maksymalna rozdzielczość lub prześlij obraz System > Catalog > Product Image

  • zwiększyć limit rozmiaru plików PHP na serwerze za pomocą .htaccess lub config patrz: /programming/6292687/upload-6-mb-image-in-magento
asherrard
źródło
2

Upewnij się, że folder multimediów media / tmp / catalog / product istnieje ”i ustaw ten katalog do zapisu przez twój serwer WWW”

Altravista
źródło
Zamiast ustawiać uprawnienia 777, lepiej powiedzieć „i spraw , aby ten katalog był zapisywalny przez twój serwer”. Chodzi o to, że nie ma potrzeby udzielania każdemu użytkownikowi prawa zapisu tylko po to, aby twój serwer mógł pisać obrazy. (Nie jestem tym, który przegłosował, ale na wypadek, gdybyś się zastanawiał, najprawdopodobniej jest to powód)
Dan.
tak, oczywiście;)
Altravista
2

Uprzejme wyboru mediów folderu mający 777 permission.If was włączyć tryb środki kompilacja także kontrola obejmuje folderu mający 777 pozwolenia.

Po udzieleniu 777 uprawnień do tych folderów problem został dla mnie rozwiązany.

Pasupathi Thangavel
źródło
0

Może to być wygasły certyfikat administracji Plesk (tak było w moim przypadku).

Próbowałem powyższych kroków, ale to nie zadziałało. Stamtąd próbowałem uzyskać dostęp do plików za pośrednictwem FileZilla, aby jednocześnie nadać uprawnienia wszystkim folderom, stąd komunikat o błędzie dotyczący wygasłego certyfikatu. To nie jest certyfikat SSL samego sklepu, ale administracja Plesk. Stworzyłem nowy samopodpisany certyfikat, zastosowałem administrację Plesk i wszystko wróciło do normy.

To zadziałało dla mnie. Zostawiam tutaj mój wkład.

Powodzenia

Cledson Silva
źródło
0

Występuje błąd w Magento podczas przesyłania plików, gdy Twój Magento DocumentRoot na vhost jest prawidłowo ustawiony

/path/to/magento/pub

Zamiast (przestarzałe)

/path/to/magento

Program przesyłający próbuje utworzyć pliki w

/path/to/magento/pub/pub/your_upload_dir

Pamiętaj, że pub lokalizacji idzie dwa razy. Powiedzieli, że naprawią to w wersji 2.2.0+, ale w wersji 2.2.1 problem nadal występuje.

A.Maksymiuk
źródło