2014-08-28 122 views
1

我知道这个问题已经被覆盖,如果我来这里寻求帮助,这是因为我在互联网上找到的所有解决方案都没有不为我工作。Prestashop:SmartyException'带消息'无法写入文件...'

问题是以下几点:

我正在使用Prestashop 1.6。我在本地开发了我的网站,一切正常,所以我决定把它放到网上。但是,移动数据库和我的FTP网站后,我遇到了以下错误:

未捕获的异常“SmartyException”有消息“无法写入文件/ home /网络/ chienchat /缓存/ smarty/compile/wrt53fc8900660ea3.68556794'in /home/web/chienchat/tools/smarty/sysplugins/smarty_internal_write_file.php:44 堆栈跟踪:#0 /home/web/chienchat/tools/smarty/sysplugins/smarty_internal_template.php( 201):Smarty_Internal_Write_File :: writeFile('/ home/web/chien ...','compileTemplateSource()#2 /home/web/chienchat/classes/module/Module.php(1860):Smarty_Internal_TemplateBase-> fetch() #3 /home/web/chienchat/modules/blockuserinfo/blockuserinfo.php(72):ModuleCore-> d isplay('/ home/web/chien ...','blockuserinfo.t ...')#4 /home/web/chienchat/classes/Hook.php(507):BlockUserInfo-> hookDisplayTop(Array)#5 /home/web/chienchat/classes/controller/FrontController.php(444):HookCore :: exec('displayTop')#6 /home/web/chienchat/controllers/front/IndexController.php(37):F in /家用/网络/ chienchat /工具/智者/ sysplugins/smarty_internal_write_file.php上线44

我发现它可能是文件权限,所以对于测试的缘故,我已经设置CHMOD 777整个www,通过使用FileZilla。问题仍然存在。 我想指出,删除缓存/ smarty文件夹后,并刷新非工作页面后,文件夹缓存/ smarty /编译是重新创建,但它是空的。请帮助我,我似乎无法解决任何问题。

回答

1

正确的权限是755。如果这不起作用与775

尝试另外apache用户必须是所需的文件夹的所有者。

的文件夹,这里列出:如果您使用的文件系统缓存也可以发生 http://doc.prestashop.com/display/PS15/Installing+PrestaShop#InstallingPrestaShop-Systemcompatibility

+0

我没有安装新的Prestashop,我将我的本地prestashop文件夹传输到我的网站。我需要直接重新安装Prestashop吗?顺便说一下,我怎么能确定我正在使用的Apache用户是所需文件夹的所有者?我在我的ftp中创建了它们,并且我使用“root”用户登录到服务器,所以我非常肯定它很好,不是吗?如何在无需再次安装的情况下获得环境兼容性检查?我非常感谢你的关注。 我精确我没有使用Linux或Ubuntu的,因此我不能像我在大多数互联网主题上看到的那样键入命令行。 – Malcom 2014-08-29 06:38:07

+1

不,你不需要重新安装PrestaShop。只要确保文件夹有权限。在大多数情况下,这是问题 - smarty不能写入编译文件夹(cache/smarty/compile)。您可以在BackOffice>高级参数>配置信息中查看它。 root用户和apache用户是两个不同的用户。 Root有访问权限,但apache可能没有。只需用755测试cache/smarty/compile即可。 – PrestaShopDeveloper 2014-08-29 07:08:36

+0

我在每个文件夹和文件上都设置了CHMOD 755,但它不起作用。我尝试了775,它也没有工作。我无法访问服务器上的后台,因此我无法检查配置信息。我能做什么?我收到了一条新消息:我再次删除了缓存/ smarty文件夹,但是当我刷新页面时,文件夹没有再次创建。将CHMOD 777放在“缓存”文件夹后,再次刷新页面后,创建了文件夹cache/smarty和cache/smarty/compile,但后者为空。 – Malcom 2014-08-29 08:18:45

1

此错误。许多prestashop插件的写入方式导致缓存未命中并存储大量每个页面的组合(页面名称,类别名称,语言等)。如果您有大量产品,这可能意味着您运行缓存文件夹的Inode限制,您将开始看到此错误,但仅限于第一次访问页面。已经在缓存中的页面仍然可以正常渲染。

在这种情况下的解决方案是

一)清除缓存 b)厘定但是所有的每一个模块 c中的高速缓存IDS)使用替代缓存策略

一种C警告 - 它由于缓存仍在增长,因此不能解决问题。它只是取消了你可以容纳多少缓存项目的文件系统限制。我可以为那些遭遇这个问题的人建议最好的做法是在出现此错误时自动停止日志并清除缓存。

0

你应该检查你的直接管理或托管INODES。只是尝试增加或删除文件。

当xml导入和托管的inode数量很低时,我通常会得到类似或相同的错误。