Opencart-如何将vqmod文件夹移出public_html


Opencart - How to move vqmod folder outside of public_html?

由于一些安全问题,我需要将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路径有特殊的意义,所以我不确定它是否适用,你可能需要使用不带_的路径。