Procédure
Usługa, której dotyczy : współdzielony hosting webowy LWS Panel
Panel, którego dotyczy : LWS Panel
Poziom : średni
Błąd open_basedir restriction in effect pojawia się, gdy skrypt PHP próbuje uzyskać dostęp do pliku lub folderu znajdującego się poza dozwolonym obszarem na Twoim hostingu.
Może on wystąpić zwłaszcza po migracji strony, z powodu starej ścieżki zapisanej w konfiguracji, źle skonfigurowanego rozszerzenia lub niestandardowego skryptu.
Zachowaj kopię pliku przed jego modyfikacją. Musisz również posiadać pełny komunikat błędu, aby zidentyfikować odrzuconą ścieżkę oraz plik PHP będący źródłem problemu.
Komunikat może wyglądać jak w tym przykładzie :
Warning: include(): open_basedir restriction in effect.
File(/home/ancien-hebergeur/public_html/config.php)
is not within the allowed path(s):
(/var/www/exemple.com/htdocs/:/tmp/)
in /var/www/exemple.com/htdocs/index.php on line 24Zawiera on kilka przydatnych informacji :
/home/ancien-hebergeur/public_html/config.php to plik, do którego skrypt próbuje uzyskać dostęp ;/var/www/exemple.com/htdocs/ odpowiada przestrzeni, w której mogą być używane pliki Twojej strony ;/var/www/exemple.com/htdocs/index.php to skrypt, który próbował otworzyć plik ;line 24 wskazuje linię w tym skrypcie.W tym przykładzie strona nadal używa ścieżki pochodzącej ze starego hostingu. PHP blokuje więc dostęp do pliku.
Jeśli Twoja strona wyświetla tylko białą stronę lub błąd 500, sprawdź logi hostingu :
open_basedir restriction in effect.Najbardziej aktualne wpisy znajdują się zwykle na końcu logu.
W LWS Panel pliki publiczne strony są zazwyczaj umieszczone w katalogu tego typu :
/var/www/votre-domaine.fr/htdocs/Zastąp votre-domaine.fr nazwą odpowiedniej domeny.
Następnie sprawdź w menedżerze plików lub przez FTP, czy poszukiwany plik rzeczywiście znajduje się w tym katalogu albo w jednym z jego podkatalogów.
Nieprawidłowa ścieżka może być zapisana :
W pierwszej kolejności wyszukaj charakterystyczną część starej ścieżki, na przykład :
/home/ancien-hebergeur/Nie modyfikuj przypadkowo wewnętrznych plików WordPressa, PrestaShop ani innej aplikacji. Zacznij od sprawdzenia konfiguracji rozszerzenia lub modułu wskazanego w komunikacie o błędzie.
Zastąp starą ścieżkę rzeczywistą ścieżką pliku na Twoim hostingu LWS.
Na przykład :
Ancien chemin :
/home/ancien-hebergeur/public_html/cache/
Nouveau chemin :
/var/www/votre-domaine.fr/htdocs/cache/W niestandardowym skrypcie PHP często lepiej jest budować ścieżkę na podstawie katalogu skryptu, zamiast zapisywać pełną ścieżkę serwera.
Na przykład :
require __DIR__ . '/config.php';Ten zapis pozwala skryptowi szukać config.php we własnym katalogu.
Dyrektywa open_basedir nie może zostać zmieniona ani wyłączona z poziomu pliku .user.ini w LWS Panel.
Tego zabezpieczenia nie należy omijać. Musisz poprawić ścieżkę używaną przez stronę, skrypt lub rozszerzenie.
Po poprawieniu ścieżki wyczyść pamięć podręczną z poziomu interfejsu CMS lub aplikacji.
Stara ścieżka może pozostać zapisana w pliku cache, nawet po zmianie konfiguracji.
Dokładnie odtwórz działanie, które powodowało błąd: otwórz odpowiednią stronę, wyślij formularz lub ponownie uruchom przerwaną operację.
Następnie ponownie sprawdź logi PHP. Nie powinna pojawić się żadna nowa linia z open_basedir restriction in effect.
Naprawa jest zakończona, gdy dana strona lub funkcja znów działa i w logach PHP nie pojawia się żaden nowy błąd open_basedir.
Widzę tylko błąd 500 lub białą stronę
Pełny komunikat prawdopodobnie znajduje się w logach PHP. Otwórz narzędzie Logi Apache / PHP z poziomu LWS Panel, a następnie odtwórz błąd przed odświeżeniem logu.
Wskazana ścieżka odpowiada mojemu poprzedniemu hostingowi
Ścieżka absolutna nie została zaktualizowana podczas migracji. Wyszukaj tę ścieżkę w plikach konfiguracyjnych, ustawieniach rozszerzeń oraz niestandardowych skryptach.
Zastąp ją aktualną ścieżką Twojej strony w LWS Panel.
Nie mogę znaleźć, gdzie ścieżka jest zapisana
Sprawdź nazwę pliku PHP wyświetlaną na końcu komunikatu o błędzie. Często pozwala ona zidentyfikować aplikację, motyw, rozszerzenie lub skrypt, którego dotyczy problem.
W przypadku rozszerzenia najpierw sprawdź jego ustawienia dotyczące cache, importu, kopii zapasowych lub plików tymczasowych.
Plik znajduje się w folderze htdocs, ale błąd nadal występuje
Sprawdź, czy ścieżka używana przez skrypt dokładnie odpowiada rzeczywistemu położeniu pliku.
Dowiązanie symboliczne może również pozornie wskazywać na plik strony, jednocześnie kierując PHP do lokalizacji znajdującej się poza dozwolonym obszarem. W takim przypadku zastąp dowiązanie bezpośrednim dostępem do pliku znajdującego się w katalogu strony.
Błąd powraca po zmianie
Wyczyść pamięć podręczną aplikacji, a następnie ponownie odtwórz problem. Sprawdź również, czy ścieżka nie jest zapisana w kilku miejscach.
Zadaj je zespołowi LWS i społeczności. Odpowiedź zostanie opublikowana po moderacji.