将pimcore从服务器移动到本地时出现致命错误

时间:2015-01-09 05:17:19

标签: localhost server transfer pimcore

我将所有 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 项目,它的工作正常。

我可以在数据库中进行任何更改吗? 如何在本地成功运行我的项目?

4 个答案:

答案 0 :(得分:2)

如果已经存在使用该类的对象,则会发生错误。

<强>解决方案

  1. 以管理员身份登录后端。
  2. 转到Settings > Object > Classes
  3. 对于左侧树中的每个类,单击它们,然后点击右下角的保存。 (如果无法保存,只需按添加新课程按钮
  4. 创建一个新课程

    现在尝试加载frondend。它会起作用。

答案 1 :(得分:1)

Pimcore使用数据库视图存储对象数据。导出数据库时,在视图定义中还会有SECURITY DEFINER。

/*!50013 DEFINER=`prod-user`@`%` SQL SECURITY DEFINER */

  1. 选项:Vinot VT解决方案应该可行 您可以使用运行命令执行相同的操作:
  2. php pimcore/cli/console.php deployment:classes-rebuild

    1. 选项:在本地env'prod-user'上使用相同的数据库用户名,如果你要大量导入prod数据库,这很有用

    2. 选项:在导入数据库之前用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

中删除所有文件

让我们知道结果如何。