将 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 中设置
如果没有帮助,请检查 apache 和/或 php 错误日志。
【讨论】:
以上是关于将 pimcore 从服务器移动到本地时出现致命错误的主要内容,如果未能解决你的问题,请参考以下文章
访问本地托管的 Wordpress 站点时出现问题(重定向+其他废话)