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
Zawartość 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.
Zmiana uprawnień dotyczy tylko folderów czy również plików, które znajdują się wewnątrz?
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
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
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ę!