Press "Enter" to skip to content

Nadanie poprawnych uprawnień do folderów na serwerze gdzie zainstalowany jest sklep PrestaShop 1.7

Admin 4

Przy instalacji sklepu te uprawnienia są odpowiednio nadawane. Gorzej jak przenosisz sklep na inny serwer albo rozpakowujesz go z archiwum. Wtedy mogą mieć one złe wartości.

Jeśli zachodzi potrzeba poprawy uprawnień plików – wywołaj następujące komendy w konsoli Linux.

Jeśli nie masz dostępu do konsoli Linux – sprawdź metodę wywołania komendy przez funkcję shell(); w PHP – dalsza część artykułu

Wewnątrz folderu z instalacją PrestaShop 1.7.

Poprawienie uprawnień plików i folderów:

find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;

Prawo do zapisu dla systemowych folderów:

chmod 755 var/cache/ var/logs/ img download/ upload/ themes/ modules/ override/ -R

Uprawnienia www dla całego folderu ze sklepem

Wywołujemy je folder wyżej niż instalacja PrestaShop 1.7. Te komendy są opcjonalne.

Jeśli sklep zainstalowany jest w folderze prestashop:

sudo chown -R user:www-data prestashop
sudo chown g+w -R prestashop

lub podając pełną ścieżkę do miejsca zainstalowania sklepu – tutaj: /var/www/prestashop:

chown -R user:www-data /var/www/prestashop
chown g+w -R /var/www/prestashop

Wywołanie komend przez PHP.

W przypadku braku dostępu do konsoli Linux, można posłuzyć się funkcjami w PHP.

Utwórz np. plik shell.php (w folderze głównym sklepu) z zawartością wybranej komendy:

<?php 
shell_exec('chmod 755 var/cache/ var/logs/ img download/ upload/ themes/ modules/ override/ -R'); 
?>

Funkcja shell_exec() nie zadziała w safe mode PHP. Alternatywą jest użycie funkcji exec():

<?php 
exec('chmod 755 var/cache/ var/logs/ img download/ upload/ themes/ modules/ override/ -R'); 
?>

Zostaje jeszcze system():

<?php 
system('chmod 755 var/cache/ var/logs/ img download/ upload/ themes/ modules/ override/ -R'); 
?>

Niestety dużo hostingów blokuje każdą z nich – względy bezpieczeństwa. Pozostaje Ci zatem misterne zmienianie uprawnień folderów przez program do FTP 😐

Czyli wszystkie foldery poniżej muszą mieć ustawienia 755:

var/cache/
var/logs/
img
download
upload
themes
modules
override

Niestety dotyczy to też podfolderów wiec musisz wejść do każdego z osobna, jeśli Twój program nie nakłada uprawień wgłąb.

  1. Mariusz K Mariusz K

    Zmiana uprawnień dotyczy tylko folderów czy również plików, które znajdują się wewnątrz?

    • Admin Admin

      Przeważnie tylko folderów ale jak pliki wewnątrz nich mają być np zastąpione przez nowe o tych samych nazwach to też ich. W konsoli wystarczy dodać parametr „-R” do polecenia chmod aby objęło ono także cała zawartość folderu

  2. RICKY DŻALAPINO RICKY DŻALAPINO

    CO?
    Uprawnienia 777?!
    Pomijam już kwestie bezpieczeństwa.

    A wiesz, że większość hostingów nie pozwoli uruchomić plików php w takich folderach?
    np. tych wykorzystywanych do zapytań AJAX w modułach np modules/homeslider/ajax_homeslider.php ?
    Zapytania takie zakończą się 403 forbidden albo 500 internal server error

    • Admin Admin

      OK @Ricky, przekonałeś nas:) Zmieniliśmy w tekscie 777 na 755. Istotnie, niektóre hostingi mogą wywalić błąd przy uprawnieniach 777. Dzięki za celną uwagę!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
PrestaShop 1.7.5.2 i przenosiny na nowy serwer. Możesz natknąć się na…