Beheben des PHP-Fehlers „open_basedir restriction in effect“ im LWS Panel

Procédure

  

Betroffener Dienst : gemeinsames Webhosting LWS Panel
Betroffenes Panel : LWS Panel
Stufe : mittel

Der Fehler open_basedir restriction in effect erscheint, wenn ein PHP-Skript versucht, auf eine Datei oder einen Ordner außerhalb des für Ihr Hosting erlaubten Bereichs zuzugreifen.

Er kann insbesondere nach der Migration einer Website auftreten, aufgrund eines alten in der Konfiguration gespeicherten Pfads, einer falsch konfigurierten Erweiterung oder eines benutzerdefinierten Skripts.

Vor dem Beginnen

Bewahren Sie vor der Änderung eine Kopie der Datei auf. Sie sollten außerdem die vollständige Fehlermeldung haben, um den verweigerten Pfad und die für das Problem verantwortliche PHP-Datei zu identifizieren.

Die Fehlermeldung verstehen

Die Meldung kann beispielsweise so aussehen:

Code
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

Sie enthält mehrere nützliche Informationen :

  • /home/ancien-hebergeur/public_html/config.php ist die Datei, auf die das Skript zugreifen möchte ;
  • /var/www/exemple.com/htdocs/ entspricht dem Bereich, in dem die Dateien Ihrer Website verwendet werden können ;
  • /var/www/exemple.com/htdocs/index.php ist das Skript, das versucht hat, die Datei zu öffnen ;
  • line 24 gibt die betreffende Zeile in diesem Skript an.

In diesem Beispiel verwendet die Website noch einen Pfad aus einem alten Hosting. PHP blockiert daher den Zugriff auf die Datei.

Den Fehler in den PHP-Protokollen finden

Wenn Ihre Website nur eine leere Seite oder einen 500-Fehler anzeigt, prüfen Sie die Hosting-Protokolle:

  1. Öffnen Sie das Tool Apache / PHP-Logs.
  2. Wiederholen Sie die Aktion, die das Problem auf Ihrer Website auslöst.
  3. Aktualisieren Sie die Protokolle und suchen Sie nach der Zeile mit open_basedir restriction in effect.
  4. Notieren Sie den verweigerten Pfad und die am Ende der Meldung angegebene PHP-Datei.

Die neuesten Zeilen befinden sich in der Regel am Ende des Protokolls.

Den von der Website verwendeten Pfad korrigieren

1. Überprüfen Sie den tatsächlichen Speicherort der Datei

Im LWS Panel befinden sich die öffentlichen Dateien einer Website normalerweise in einem Verzeichnis wie diesem:

Code
/var/www/votre-domaine.fr/htdocs/

Ersetzen Sie votre-domaine.fr durch den betreffenden Domainnamen.

Prüfen Sie anschließend im Dateimanager oder per FTP, ob sich die gesuchte Datei tatsächlich in diesem Verzeichnis oder in einem seiner Unterordner befindet.

2. Finden Sie den alten Pfad wieder

Der falsche Pfad kann gespeichert sein :

  • in einer Konfigurationsdatei ;
  • in einem benutzerdefinierten PHP-Skript ;
  • in den Einstellungen einer Erweiterung oder eines Themes ;
  • in der Konfiguration eines Cache-, Import-, Sicherungs- oder temporären Dateiordners ;
  • in Daten, die nach einer Migration erhalten geblieben sind.

Suchen Sie zunächst nach dem charakteristischen Teil des alten Pfads, zum Beispiel :

Code
/home/ancien-hebergeur/

Ändern Sie interne Dateien von WordPress, PrestaShop oder einer anderen Anwendung nicht blind. Prüfen Sie zunächst die Konfiguration der im Fehlermeldung genannten Erweiterung oder des Moduls.

3. Ersetzen Sie den falschen Pfad

Ersetzen Sie den alten Pfad durch den tatsächlichen Pfad der Datei auf Ihrem LWS-Hosting.

Zum Beispiel :

Code
Alter Pfad :
/home/ancien-hebergeur/public_html/cache/

Neuer Pfad :
/var/www/votre-domaine.fr/htdocs/cache/

Bei einem benutzerdefinierten PHP-Skript ist es oft besser, den Pfad ausgehend vom Verzeichnis des Skripts zu erstellen, statt den vollständigen Serverpfad zu speichern.

Zum Beispiel :

Code
require __DIR__ . '/config.php';

Diese Schreibweise ermöglicht es dem Skript, config.php in seinem eigenen Verzeichnis zu suchen.

Die Direktive open_basedir kann auf LWS Panel nicht über eine .user.ini-Datei geändert oder deaktiviert werden.

Dieser Schutz darf nicht umgangen werden. Sie müssen den von der Website, dem Skript oder der Erweiterung verwendeten Pfad korrigieren.

4. Leeren Sie den Cache der Anwendung

Nachdem Sie den Pfad korrigiert haben, leeren Sie den Cache über die Benutzeroberfläche Ihres CMS oder Ihrer Anwendung.

Ein alter Pfad kann auch nach der Änderung der Konfiguration noch in einer Cache-Datei gespeichert bleiben.

Überprüfen, ob alles funktioniert

Wiederholen Sie genau die Aktion, die den Fehler verursacht hat: Öffnen Sie die betreffende Seite, senden Sie das Formular oder starten Sie die unterbrochene Operation erneut.

Prüfen Sie anschließend erneut die PHP-Protokolle. Es darf keine neue Zeile open_basedir restriction in effect erscheinen.

Die Korrektur ist abgeschlossen, wenn die betreffende Seite oder Funktion wieder funktioniert und keine neue open_basedir-Fehler in den PHP-Protokollen erscheinen.

Häufige Probleme

Ich sehe nur einen 500-Fehler oder eine leere Seite

Die vollständige Meldung ist wahrscheinlich in den PHP-Protokollen gespeichert. Öffnen Sie das Tool Apache / PHP-Logs im LWS Panel und reproduzieren Sie den Fehler, bevor Sie das Protokoll aktualisieren.

Der angegebene Pfad entspricht meinem alten Hoster

Ein absoluter Pfad wurde während der Migration nicht aktualisiert. Suchen Sie diesen Pfad in den Konfigurationsdateien, den Einstellungen der Erweiterungen und den benutzerdefinierten Skripten.

Ersetzen Sie ihn durch den aktuellen Pfad Ihrer Website auf dem LWS Panel.

Ich finde nicht, wo der Pfad gespeichert ist

Sehen Sie sich den Namen der am Ende der Fehlermeldung angezeigten PHP-Datei an. Er ermöglicht oft, die betreffende Anwendung, das Theme, die Erweiterung oder das Skript zu identifizieren.

Bei einer Erweiterung prüfen Sie zuerst deren Einstellungen für Cache, Import, Sicherung oder temporäre Dateien.

Die Datei befindet sich im Ordner htdocs, aber der Fehler bleibt bestehen

Prüfen Sie, ob der vom Skript verwendete Pfad exakt dem tatsächlichen Speicherort der Datei entspricht.

Ein symbolischer Link kann ebenfalls scheinbar auf eine Datei der Website verweisen, während er PHP zu einem Speicherort außerhalb des erlaubten Bereichs führt. Ersetzen Sie in diesem Fall den Link durch einen direkten Zugriff auf eine Datei im Verzeichnis der Website.

Der Fehler tritt nach der Änderung erneut auf

Leeren Sie den Cache Ihrer Anwendung und reproduzieren Sie dann das Problem. Prüfen Sie außerdem, ob der Pfad an mehreren Stellen gespeichert ist.

help.lws.net/a/765
War dieser Artikel hilfreich?

Ja

Nicht

19 675 Mal gelesen

Vielen Dank! Stellen Sie gerne Fragen zu unserer Dokumentation, wenn Sie weitere Informationen wünschen, und helfen Sie uns, sie zu verbessern.

Ähnliche Artikel

Eine Frage zu diesem Artikel?

Stellen Sie sie dem LWS-Team und der Community. Die Antwort wird nach Moderation veröffentlicht.

Stellen Sie eine Frage an das LWS-Team und seine Gemeinschaft

DSGVO: Verantwortlicher: LWS-Ligne Web Services. Zweck: Moderation und öffentliche Veröffentlichung Ihrer Frage, gegebenenfalls Benachrichtigung über eine Antwort. Rechtsgrundlage: Einwilligung (Art. 6 Abs. 1 lit. a DSGVO). Speicherdauer der E-Mail-Adressen: 90 Tage nach der Benachrichtigung, höchstens 12 Monate ohne Antwort. Zur Ausübung Ihrer Rechte siehe den DSGVO-Abschnitt unserer AGB.