Добро пожаловать в базу знаний

OpenCart

Проблема с open_basedir при установке OpenCart

Первое, что нам понадобится - это переключить работу сайта на php 8.1. Для выполняем действия по инструкции: https://blog.cishost.ru/2021/12/09/kak-smenit-versiyu-php.html Затем переходим на…

Первое, что нам понадобится - это переключить работу сайта на php 8.1. Для выполняем действия по инструкции: https://blog.cishost.ru/2021/12/09/kak-smenit-versiyu-php.html

Затем переходим на сайт, но при попытки выполнить установку OpenCart видим предупреждение:

Warning: is_dir(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (/var/www/userXXXX/data:/tmp:.) in /var/www/userXXXX/data/www/domain
.ru/system/storage/vendor/twig/twig/src/Loader/FilesystemLoader.php on line 91 Twig\Error\Loader Error: The "/" directory does not exist ("/"). in /var/www/userXXXX/da
ta/www/domain.ru/system/storage/vendor/twig/twig/src/Loader/FilesystemLoader.php on line 92

Устранить проблему можно несколькими способами

Cпособ 1 (не рекомендуемый)

Одно из решений - это указать php_admin_value open_basedir none в конфиге apache или open_basedir = "" в php.ini . Разберем, почему этого не стоит делать.

PHP функция open_basedir предотвращает работу (открытие) файлов и скриптов, которые находится вне разрешённый настроками сервера, директории. Если эти open_basedir ограничения включены, то все неавторизованные пользователи получают разрешения и доступ только к разрешённым в настройках папкам на сервере.

Поэтому в целях безопасности не верно указывать пустой путь в open_basedir = "" или задавать php_admin_value open_basedir none, то есть отключать ограничения в open_basedir, так как скрипты сайта начнут производить запись в корневой каталог сервера "/", в результате чего может быть забит весь корневой раздел и сервер «ляжет».

Способ 2 ( корректный способ)

Оставить open_basedir = "/var/www/userXXXX/data:/tmp:." – то есть каталог аккаунта пользователя

Открыть /system/storage/vendor/twig/twig/src/Loader/FilesystemLoader.php

Заменить

$checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path;

на

$checkPath = $this->rootPath.$path;

После выполнения данной замены переходим на сайт и видим приглашение к установке OpenCart

Open-cart-basedir.png

Информация полезна?
0