对于某些安全问题,我需要将vqmod
文件夹放在public_html
之外,我应该如何完成这项工作以保持vqmod
的工作?
答案 0 :(得分:0)
我还想将vqmod放在其他地方,似乎可以付出一些努力。假设vqmod目录和public_html(其余部分,如catalog,admin,index.php等)位于同一顶级目录中,您可以更新这样的配置中的定义(首先必须将$ oc_path指向wherever)您拥有的顶级目录): config.php:
define('DIR_VQMOD', $oc_path . 'vqmod/');
define('DIR_APPLICATION', $oc_path . 'public_html/catalog/');
...
admin / config.php:
define('DIR_VQMOD', $oc_path . 'vqmod/');
define('DIR_APPLICATION', $oc_path . 'public_html/admin/');
...
然后修改这样的索引:
index.php:
require_once(DIR_VQMOD . 'vqmod.php');
admin / index.php:
require_once(DIR_VQMOD . 'vqmod.php');
然后在函数_parseMods:
中修改第622行的vqmod.php替换为:$fullPath = $this->_vqmod->path($fileToMod);
由此:$fullPath = $this->_vqmod->path('public_html/' . $fileToMod);
和函数modCheck中的第91行:
替换为:$sourcePath = $this->path($sourceFile);
由此:$sourcePath = $this->path('public_html/' . $sourceFile);
至少在我的OpenCart版本(1.5.5.1)和vqmod(2.3.2)中,这对我没有任何问题。你当然需要删除一些缓存。我删除了所有缓存的内容:vqmod/vqcache/*, vqmod/mods.cache, public_html/system/cache/*
。
我用htdocs而不是public_html测试了这个。 Underscore对vqmod路径有特殊意义,所以我不确定它是否适用它,你可能需要使用不带_的路径。