由于一些安全问题,我需要将vqmod
文件夹放在public_html
之外,我应该如何做这项工作来保持vqmod
的工作?
我还想把vqmod放在其他地方,这似乎需要一些努力才能实现。假设vqmod目录和public_html(其中是其他目录,如catalog、admin、index.php等)在同一个顶级目录中,您可以更新配置中的定义,如下所示(首先,您必须将$oc_path指向任何顶级目录):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测试了这一点。Undercore对vqmod路径有特殊的意义,所以我不确定它是否适用,你可能需要使用不带_的路径。