'open_basedir restriction in effect. File(…) is not within the allowed path(s)' betekent dat PHP een bestand buiten de toegestane mappen probeert te lezen. Zo los je het veilig op.
Met open_basedir beperkt de server tot welke mappen PHP toegang heeft. Op gedeelde hosting is dat een belangrijke beveiliging: een website kan zo niet bij de bestanden van een andere site. Probeert code een bestand te openen buiten die mappen, dan krijg je Warning: file_exists(): open_basedir restriction in effect. File(/pad) is not within the allowed path(s).
Vaak gaat het om een pad dat niet klopt (een absoluut pad van een andere server na een verhuizing), om een tijdelijke map (/tmp) die niet is toegestaan, of om een sessiemap buiten de toegestane paden.
Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.
De melding noemt het pad en de toegestane paden. Vergelijk ze: ligt het bestand echt buiten de site, of is het pad verkeerd geschreven?
Bouw paden op vanaf de map van het script, zodat ze na een verhuizing blijven kloppen.
<?php
$config = __DIR__ . '/config/instellingen.php';
require_once $config;Zet upload_tmp_dir en session.save_path op een map binnen de toegestane paden, of vraag de hoster die mappen toe te voegen.
Op een eigen server stel je open_basedir per site in, bijvoorbeeld in de PHP-FPM-pool. Voeg alleen mappen toe die de site echt nodig heeft; open_basedir helemaal uitzetten haalt een beschermingslaag weg.
; PHP-FPM pool, per site
php_admin_value[open_basedir] = /var/www/mijnsite:/tmpKom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.
Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.
De code of configuratie bevat nog absolute paden van de oude server. Zoek ernaar in configuratiebestanden en vervang ze door relatieve paden of de nieuwe locatie.
Op gedeelde hosting meestal niet, en dat is goed. Op een eigen server kan het, maar je verliest daarmee een afscherming tussen sites.
Controleer of session.save_path binnen de toegestane paden valt en of PHP daar mag schrijven.
Hulp nodig van een mens? Website-onderhoud · WordPress-support · Hosting en onderhoud · Alle oplossingen