Каталог изображений вне папки сайта, один каталог на несколько сайтов

Бывают случаи, когда необходимо сделать несколько сайтов с одной и той же, или во многом похожей базой товаров, при этом используя одни и те же изображения. Для экономии дискового пространства в этом случае лучший вариант - один каталог изображений на все сайты, при этом на сайте пути к картинкам будут выглядеть так же, как если бы они находились в папке сайта, по привычному пути.

Есть:

Несколько сайтов на opencart с одними и теми же товарами

VPS сервер, ubuntu 14

панель Vesta

Путь к корню сайта: /home/admin/web/хххххх.ru/public_html

Каталог, где будут размещены изображения: /home/admin/web/image/

В принципе, метод достаточно универсален, в зависимости от панели могут быть некоторые отличия с настройкой open_basedir.

Часть 1 — настройки opencart и операции с каталогами изображений

Открываем конфиги — /config.php и /admin/config.php и меняем путь к каталогу изображений:

define('DIR_IMAGE', '/home/admin/web/хххххх.ru/public_html/image/');

На

define('DIR_IMAGE', '/home/admin/web/image/');

Перемещаем каталог изображений (/image) соответственно новому пути

Теперь файлы перемещены, но:

1 — Изображения нельзя открыть из браузера, т.к. в корне сайта нет каталога «image»

2 — Каталог по новому пути скорее всего недоступен для CMS (по крайней мере в указанных условиях это так) и при открытии сайта Вы увидите ошибки вроде:

Warning: is_file(): open_basedir restriction in effect. File(/home/admin/web/image/catalog/123.jpg) is not within the allowed path(s): (/home/admin/web/xxxxxxxx.ru/public_html:/home/admin/tmp) in /home/admin/web/xxxxxxxx.ru/public_html/catalog/model/tool/image.php on line 4

Решение первого пункта — создать в корне сайта ссылку на папку изображений в новом месте. Для этого необходимо в терминале выполнить команду:

ln -s /home/admin/web/image/ /home/admin/web/хххххх.ru/public_html/image

Часть 2 — избавляемся от ошибки с open_basedir

В open_basedir содержится список каталогов, к которым разрешено обращаться php скриптам. Если Вы разместили image в каталоге, который есть в списке разрешенных, ошибок быть не должно и на этом можно остановиться, все должно работать. Если ошибки есть, добавляем путь в шаблон /usr/local/vesta/data/templates/web/apache2/default.stpl, или /usr/local/vesta/data/templates/web/httpd/default.stpl, в зависимости от используемого web сервера. Находим:

php_admin_value open_basedir %docroot%:%home%/%user%/tmp

Меняем (добавляем ":%home%/%user%/web/image"):

php_admin_value open_basedir %docroot%:%home%/%user%/tmp:%home%/%user%/web/image

При использовании других панелей/отсутствии таковой путь будет другой

Далее необходимо внести изменения в текущую конфигурацию сайтов - пересоздать WEB для пользователя через панель:

Добавить комментарий

Комментарии ()