Отличный ответ, сларек. Мы сделали что-то очень похожее. Вместо того, чтобы редактировать index.php, мы устанавливаем отдельные папки вне кодовой базы magento и включаем mage.php из этих папок, а затем редактируем etc_dir (и другие dir), как в вашем методе выше.
структура папок:
/ www / client1
/ www / client2
/ www / client3
/ www / clientX
/ www / magento
Внутри каждой клиентской папки находятся:
- /www/clientx/etc/local.xml (с определением уникальной базы данных и уникальной базы данных redis)
- / www / clientx / etc / modules (это символическая ссылка на / www / magento / app / etc / modules)
- /www/clientx/index.php
в /www/clientx/index.php
define('MAGENTO_ROOT', '/www/magento');
... (остальная часть index.php работает как обычно) ...
$client = isset($_SERVER['CLIENT_ID']) ? $_SERVER['CLIENT_ID'] : '';]
Mage::run($mageRunCode, $mageRunType, array('etc_dir'=>'../'.$client));
Мы установили
$_SERVER['CLIENT_ID'] in Nginx with
`fastcgi_param CLIENT_ID clientx; `