我将所有 pimcore 文件以及数据库从服务器移动到我的localhost,并在website/var/config/system.xml
中进行了必要的更改。
管理员正在工作,但前端显示错误:
Fatal error: Call to a member function getFielddefinitions() on a non-object in /var/www/html/pimcore/pimcore/models/Object/Localizedfield/Resource.php on line 179
这行代码产生错误:
$this->model->getClass()->getFielddefinition("localizedfields")->getFielddefinitions()
系统要求和文件权限正确无误。
出于测试目的,我在本地系统上安装了一个新的 pimcore 项目,它的工作正常。
我可以在数据库中进行任何更改吗? 如何在本地成功运行我的项目?
答案 0 :(得分:2)
如果已经存在使用该类的对象,则会发生错误。
<强>解决方案强>
Settings > Object > Classes
现在尝试加载frondend。它会起作用。
答案 1 :(得分:1)
Pimcore使用数据库视图存储对象数据。导出数据库时,在视图定义中还会有SECURITY DEFINER。
/*!50013 DEFINER=`prod-user`@`%` SQL SECURITY DEFINER */
php pimcore/cli/console.php deployment:classes-rebuild
选项:在本地env'prod-user'上使用相同的数据库用户名,如果你要大量导入prod数据库,这很有用
选项:在导入数据库之前用DEFINER = prod-user
@ %
替换DEFINER = local-user
@ %
答案 2 :(得分:0)
你可以:
set&lt; debug&gt; 1&lt; / debug&gt;在config.xml中 - 这应该显示错误
如果没有帮助,请检查apache和/或php错误日志。
答案 3 :(得分:0)
我们需要看到实际的错误(正如Vinod已经指出的那样)。
我可以猜测:
数据库凭据(也就是数据库用户名)是否相同? 如果不是,您可能需要从DB Dump中删除SECURITY DEFINER。 有关如何执行此操作的提示,请参阅:Remove DEFINER clause from MySQL Dumps。
另一个错误来源可能是缓存。您使用的是默认的基于文件的Pimcore缓存吗? 如果是这种情况,请尝试从网站/ var / cache和网站/ var / tmp
中删除所有文件让我们知道结果如何。