Procédure
Příslušná služba : sdílený webhosting LWS Panel
Příslušný panel : LWS Panel
Úroveň : střední
Chyba open_basedir restriction in effect se zobrazí, když se skript PHP pokusí přistoupit k souboru nebo složce, která se nachází mimo povolený prostor na vašem hostingu.
Může nastat zejména po migraci webu, kvůli staré cestě uložené v konfiguraci, špatně nastavenému rozšíření nebo vlastnímu skriptu.
Před úpravou si uchovejte kopii souboru. Také musíte mít k dispozici úplné chybové hlášení, abyste mohli určit zamítnutou cestu a soubor PHP, který je zdrojem problému.
Zpráva může vypadat například takto:
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 24Obsahuje několik užitečných informací:
/home/ancien-hebergeur/public_html/config.php je soubor, ke kterému se skript snaží přistoupit;/var/www/exemple.com/htdocs/ odpovídá prostoru, ve kterém lze používat soubory vašeho webu;/var/www/exemple.com/htdocs/index.php je skript, který se pokusil soubor otevřít;line 24 označuje příslušný řádek v tomto skriptu.V tomto příkladu web stále používá cestu pocházející ze starého hostingu. PHP tedy přístup k souboru blokuje.
Pokud se na vašem webu zobrazuje pouze bílá stránka nebo chyba 500, zkontrolujte protokoly hostingu:
open_basedir restriction in effect.Nejnovější řádky se obvykle nacházejí na konci protokolu.
V LWS Panelu jsou veřejné soubory webu obvykle umístěny v adresáři tohoto typu:
/var/www/votre-domaine.fr/htdocs/Nahraďte votre-domaine.fr názvem příslušné domény.
Poté zkontrolujte ve správci souborů nebo přes FTP, zda se hledaný soubor skutečně nachází v tomto adresáři nebo v jednom z jeho podadresářů.
Nesprávná cesta může být uložena:
Přednostně vyhledejte charakteristickou část staré cesty, například:
/home/ancien-hebergeur/Náhodně neupravujte interní soubory WordPressu, PrestaShopu ani jiné aplikace. Začněte kontrolou konfigurace rozšíření nebo modulu uvedeného v chybovém hlášení.
Nahraďte starou cestu skutečnou cestou k souboru na vašem hostingu LWS.
Například:
Ancien chemin :
/home/ancien-hebergeur/public_html/cache/
Nouveau chemin :
/var/www/votre-domaine.fr/htdocs/cache/Ve vlastním PHP skriptu je často vhodnější sestavit cestu podle složky skriptu, než ukládat úplnou cestu k serveru.
Například:
require __DIR__ . '/config.php';Tento zápis umožní skriptu vyhledat config.php ve vlastní složce.
Direktivu open_basedir nelze na LWS Panelu změnit ani vypnout ze souboru .user.ini.
Tuto ochranu není možné obejít. Musíte opravit cestu používanou webem, skriptem nebo rozšířením.
Po opravě cesty vymažte mezipaměť v rozhraní vašeho CMS nebo aplikace.
Stará cesta může zůstat uložená v souboru mezipaměti i po změně konfigurace.
Přesně zopakujte akci, která chybu vyvolávala: otevřete příslušnou stránku, odešlete formulář nebo znovu spusťte přerušenou operaci.
Poté znovu zkontrolujte protokoly PHP. Neměla by se objevit žádná nová řádka open_basedir restriction in effect.
Oprava je dokončena, když příslušná stránka nebo funkce opět funguje a v protokolech PHP se neobjevuje žádná nová chyba open_basedir.
Vidím pouze chybu 500 nebo bílou stránku
Úplná zpráva je pravděpodobně zaznamenána v protokolech PHP. Otevřete nástroj Logs Apache / PHP v LWS Panelu a poté chybu zopakujte, než protokol aktualizujete.
Zobrazená cesta odpovídá mému starému hostingu
Absolutní cesta nebyla při migraci aktualizována. Vyhledejte tuto cestu v konfiguračních souborech, nastaveních rozšíření a vlastních skriptech.
Nahraďte ji aktuální cestou vašeho webu v LWS Panelu.
Nedokážu najít, kde je cesta uložena
Podívejte se na název souboru PHP zobrazený na konci chybového hlášení. Často pomůže identifikovat příslušnou aplikaci, téma, rozšíření nebo skript.
U rozšíření nejprve zkontrolujte jeho nastavení pro cache, import, zálohy nebo dočasné soubory.
Soubor se nachází ve složce htdocs, ale chyba pokračuje
Zkontrolujte, zda cesta používaná skriptem přesně odpovídá skutečnému umístění souboru.
Symbolický odkaz může také zdánlivě ukazovat na soubor webu, ale ve skutečnosti směrovat PHP na umístění mimo povolený prostor. V takovém případě nahraďte odkaz přímým přístupem k souboru umístěnému ve složce webu.
Chyba se po úpravě vrací
Vymažte mezipaměť aplikace a poté problém zopakujte. Také zkontrolujte, zda není cesta uložena na více místech.
Položte ji týmu LWS a komunitě. Odpověď bude zveřejněna po kontrole moderátorem.