vQmod无法写入OpenCart

时间:2016-03-12 15:24:34

标签: opencart iis-8 vqmod

有人可以建议为什么vQmod无法写入缓存文件而是将名为vq2-C的空文件写入/ vqmod / vqcache?

环境 Windows Server 2012 Plesk Panel 12.5 PHP 5.3.2.9 MySQL 5.6.26 OpenCart 2.1.0.1 vQmod 2.6.1

问题 vQmod无法保存对/ vqmod / vqcache / vq2 - * .php

的修改

在每个页面加载时,它应用/vqmod/xml/*.xml中指定的修改,并将名为vq2-C的空文件写入/ vqmod / vqcache。

背景 受影响的网站已从具有类似配置的另一个Windows框迁移。

简而言之,旧服务器运行Plesk Panel 12.0,新服务器是Plesk 12.5,因此对软件版本进行了少量更新。

两个站点都运行在PHP 5.3.2.9上,新服务器更紧密地遵循OWASP建议,因此禁用了更多的PHP功能,例如。 fopen_with_path。

到目前为止的调查 再次运行vQmod安装程序报告:已安装VQMOD!

文件权限 / vqmod / logs和/ vqmod / vqcache都有修改权限,文件写在这里。权限通过Plesk Panel应用,通过远程桌面检查,并通过Plesk在Web根目录上启用全局写入权限不会改变任何内容。

日志 vQmod日志没有有用的信息,只记录跳过的文件,例如。 VQModObject :: parseMods - 无法解析[catalog / language / english / module / featured.php](SKIPPED)的路径。

没有生成php_error.log文件。

失败的请求跟踪不会发现任何问题。

测试 除vqmod_opencart.xml和修改column_left.tpl的文件外,已删除所有/ vqmod / xml文件。这些修改已成功应用,但在/ vqmod / vqcache中没有生成缓存文件。

如果删除/vqmod/checked.cache和/vqmod/mods.cache,则会在下一页加载时重新生成文件。

vQmod版本 - 回滚到2.5.1,但问题仍然存在。

其他注意事项 当启用一个特定的vQmod修改时,页面加载时间会慢得令人无法接受(最多20秒)。修改显示父类别页面上子类别的前4个产品。我还没有完成代码,但是假设它在数据库上非常努力。

在原始服务器页面上,加载时间为2秒。我怀疑这与缓存问题有关,因为这似乎是一个权限问题。

2 个答案:

答案 0 :(得分:0)

我遇到过这样的问题,我后来发现问题出在目录权限上,在这种情况下,可能是由于移动造成的。将vqcache文件夹的权限递归设置为777.它对我有用。

答案 1 :(得分:0)

道歉,我应该尽早更新。

该问题与区分大小写的preg_replace有关。

简短地从

更改vqmod.php的第120行
$stripped_filename = preg_replace('~^' . preg_quote(self::getCwd(), '~i') . '~', '', $sourcePath)

$stripped_filename = preg_replace('~^' . preg_quote(self::getCwd(), '~i') . '~i', '', $sourcePath);

表示写入/vqmod/vqcache/vq2-*.php缓存文件,网站正常运行。

https://github.com/vqmod/vqmod/issues/81

详细说明

我不认为preg_quote应该具有i argumment但它在原始代码中,所以我把它留在了。