有人可以建议为什么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秒。我怀疑这与缓存问题有关,因为这似乎是一个权限问题。
答案 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但它在原始代码中,所以我把它留在了。