คำตอบที่ดีเยี่ยม เราทำสิ่งที่คล้ายกันมาก แทนที่จะแก้ไข index.php เราตั้งค่าโฟลเดอร์แยกต่างหากนอก codebase ของ magento และรวม mage.php จากโฟลเดอร์เหล่านั้นแล้วแก้ไข etc_dir (และ dirs อื่น ๆ ) เช่นเดียวกับวิธีการของคุณด้านบน
โครงสร้างโฟลเดอร์:
/ www / client1
/ www / client2
/ www / client3
/ www / clientX
/ www / magento
ภายในแต่ละโฟลเดอร์ไคลเอนต์คือ:
- /www/clientx/etc/local.xml (พร้อมการกำหนดฐานข้อมูลเฉพาะและ redis ที่ไม่ซ้ำกัน)
- / www / clientx / etc / modules (นี่คือลิงค์ sym ไปยัง / 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; `