Jak naprawić błąd PHP „open_basedir restriction in effect” w LWS Panelu

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.

Przed rozpoczęciem

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.

Zrozumienie komunikatu o błędzie

Komunikat może wyglądać jak w tym przykładzie :

Kod
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 24

Zawiera 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.

Odnajdywanie błędu w logach PHP

Jeśli Twoja strona wyświetla tylko białą stronę lub błąd 500, sprawdź logi hostingu :

  1. Otwórz narzędzie Logi Apache / PHP.
  2. Wykonaj ponownie działanie, które powoduje problem na Twojej stronie.
  3. Odśwież logi i wyszukaj wiersz zawierający open_basedir restriction in effect.
  4. Zanotuj odrzuconą ścieżkę oraz plik PHP wskazany na końcu komunikatu.

Najbardziej aktualne wpisy znajdują się zwykle na końcu logu.

Naprawa ścieżki używanej przez stronę

1. Sprawdź rzeczywiste położenie pliku

W LWS Panel pliki publiczne strony są zazwyczaj umieszczone w katalogu tego typu :

Kod
/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.

2. Znajdź starą ścieżkę

Nieprawidłowa ścieżka może być zapisana :

  • w pliku konfiguracyjnym ;
  • w niestandardowym skrypcie PHP ;
  • w ustawieniach rozszerzenia lub motywu ;
  • w konfiguracji folderu cache, importu, kopii zapasowych lub plików tymczasowych ;
  • w danych zachowanych po migracji.

W pierwszej kolejności wyszukaj charakterystyczną część starej ścieżki, na przykład :

Kod
/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.

3. Zastąp nieprawidłową ścieżkę

Zastąp starą ścieżkę rzeczywistą ścieżką pliku na Twoim hostingu LWS.

Na przykład :

Kod
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 :

Kod
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.

4. Wyczyść pamięć podręczną aplikacji

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.

Sprawdź, czy wszystko działa

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.

Częste problemy

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.

help.lws.net/a/765
Czy ten artykuł był pomocny?

Tak

Nie

Przeczytano 19 675 razy

Dziękujemy! Zadawaj pytania dotyczące naszej dokumentacji, jeśli potrzebujesz więcej informacji, i pomóż nam ją ulepszyć.

Podobne artykuły

Masz pytanie dotyczące tego artykułu?

Zadaj je zespołowi LWS i społeczności. Odpowiedź zostanie opublikowana po moderacji.

Zadaj pytanie zespołowi LWS i jego społeczności

RODO: Administrator: LWS-Ligne Web Services. Cel: moderacja i publiczna publikacja pytania, ewentualne powiadomienie o odpowiedzi. Podstawa prawna: zgoda (art. 6 ust. 1 lit. a RODO). Przechowywanie adresów e-mail: 90 dni po powiadomieniu, maksymalnie 12 miesięcy bez odpowiedzi. Aby skorzystać ze swoich praw, zobacz sekcję RODO naszego regulaminu.