【问题标题】:Magento: Fatal error: Call to a member function rewrite()Magento:致命错误:调用成员函数 rewrite()
【发布时间】:2015-08-07 08:01:39
【问题描述】:

我很少遇到这个错误:

致命错误:在非对象上调用成员函数 rewrite() /htdocs/public/www/app/code/core/Mage/Core/Controller/Varien/Front.php 在第 165 行

我已经多次看到这个问题,但对我来说,它经常发生,并不是一个持续的错误。

我在 localhost 上运行完全相同的站点,根本没有遇到错误。它几乎发生在任何页面上。在测试站点时,我已将所有内容的权限重置为 777

我尝试了以下方法来尝试修复它:

  1. 转到http://www.your-site/downloader 并重新安装名为Lib_Varien 的软件包
  2. 平时清空var中的缓存
  3. 任何777的权限

任何想法将不胜感激!

【问题讨论】:

  • 重启 Apache 也可能有帮助
  • 好电话,将要求拥有 WHM 访问权限的人群重新启动它,不幸的是我没有它。
  • @scrowler 运气不好,谢谢。根据我在下面对回复的评论 - 我开始认为,因为我已经将该站点安装在另一个可能导致问题的 Magento 安装的子目录中。也许登台站点正在使用主站点的 var 目录?实时站点运行 1.6,暂存站点运行 1.9

标签: php magento


【解决方案1】:

根据this old Magento Stack Overflow question on the same subject,最可能的原因是 Magento 缓存过时,和/或 Magento 没有对系统的 var 文件夹的写访问权限,这可能会使 Magento 混淆它可以在哪里找到配置的缓存。

由于各种原因无法在单个 Stack Overflow 答案中推测,您的系统要么无法在配置中找到类别名 core/url_rewrite_request,要么无法实例化该模型类。找出原因,你就会解决你的问题。

更新:我知道您认为您检查了权限 --- 但再次检查权限,并检查 Magento 是否使用了您认为的 var。这里的一些调试应该会有所帮助

#File: app/code/core/Mage/Core/Model/Config/Options.php
public function getVarDir()
{
    //$dir = $this->getDataSetDefault('var_dir', $this->getBaseDir().DS.'var');
    $dir = isset($this->_data['var_dir']) ? $this->_data['var_dir']
        : $this->_data['base_dir'] . DS . self::VAR_DIRECTORY;
    if (!$this->createDirIfNotExists($dir)) {
        $dir = $this->getSysTmpDir().DS.'magento'.DS.'var';
        if (!$this->createDirIfNotExists($dir)) {
            throw new Mage_Core_Exception('Unable to find writable var_dir');
        }
    }
    return $dir;
}

【讨论】:

  • 感谢您,var 目录是可写的,并且确实存在包含类别名的文件 config 和 php 与类。我开始认为,因为我已经将该站点安装在另一个可能导致问题的 Magento 安装的子目录中。也许登台站点正在使用主站点的 var 目录?实时站点运行 1.6,暂存站点运行 1.9
  • 用一些额外的调试技巧更新了问题。
  • 干杯艾伦!如何访问该方法的结果?
  • 如果我能找出 Mage::getRoot() 返回的内容,那将是一个开始。
  • 如果我删除缓存,它甚至不会尝试重新创建它。
猜你喜欢
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 2017-06-22
  • 2012-09-29
  • 2014-02-05
  • 2014-04-29
  • 2015-09-14
相关资源
最近更新 更多