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

Posted

技术标签:

【中文标题】将 pimcore 从服务器移动到本地时出现致命错误【英文标题】:Fatal error when moving pimcore from a server to local 【发布时间】:2015-03-07 09:39:14 【问题描述】:

我将我的所有 pimcore 文件和数据库从服务器移动到我的本地主机,并在 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 项目,它运行良好。

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

【问题讨论】:

【参考方案1】:

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

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

    选项:Vinot VT 解决方案应该可以工作 您可以通过运行命令获得相同的结果:

php pimcore/cli/console.php deployment:classes-rebuild

    选项:在您的本地环境“prod-user”上使用相同的数据库用户名,如果您要大量导入 prod 数据库,这将非常有用

    选项:在导入数据库之前将 DEFINER=prod-user@% 替换为 DEFINER=local-user@%

【讨论】:

【参考方案2】:

当已经存在使用该类的对象时会发生错误。

解决方案

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

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

【讨论】:

【参考方案3】:

我们需要查看实际的错误(正如 Vinod 已经指出的那样)。

不过,我可以推测:

数据库凭据(即数据库用户名)是否相同? 如果不是,您可能需要从 DB Dump 中删除 SECURITY DEFINER。 有关如何执行此操作的提示,请参阅:Remove DEFINER clause from mysql Dumps。

另一个错误来源可能是缓存。您是否使用默认的基于文件的 Pimcore 缓存? 如果是这种情况,请尝试从 website/var/cache 和 website/var/tmp 中删除所有文件

让我们知道结果如何。

【讨论】:

@StephenMuecke 这是一个临时答案。投票不够好,但它提出了问题的解决方案。【参考方案4】:

你可以:

在 config.xml 中设置 1 - 这应该会显示错误

如果没有帮助,请检查 apache 和/或 php 错误日志。

【讨论】:

以上是关于将 pimcore 从服务器移动到本地时出现致命错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 xampp 运行本地项目时出现致命错误

访问本地托管的 Wordpress 站点时出现问题(重定向+其他废话)

设置数据表编辑器时出现致命错误

Wordpress:将本地主机数据库导入实时站点时出现问题

从 Visual Studio Code (1.62.2) 推送到 GitHub 时出现“致命:身份验证失败”

将文件从本地上传到雪花表阶段时出现问题