magento后端无法登录致命错误getBlockName

magento后端无法登录致命错误getBlockName,magento,Magento,在Magento 1.8上运行 我正在复制到测试生产站点,但在后端我无法登录,这是错误消息 Fatal error: Call to a member function getBlockName() on a non-object in /var/www/test/app/code/core/Mage/Captcha/Block/Captcha.php on line 43 为了解决这个问题,我们通常会删除var/cache文件夹,但问题出在这个测试站点上,我们没有var文件夹,所以我不确定是

在Magento 1.8上运行

我正在复制到测试生产站点,但在后端我无法登录,这是错误消息

Fatal error: Call to a member function getBlockName() on a non-object in /var/www/test/app/code/core/Mage/Captcha/Block/Captcha.php on line 43
为了解决这个问题,我们通常会删除
var/cache
文件夹,但问题出在这个测试站点上,我们没有
var
文件夹,所以我不确定是什么导致了错误


下面是

代码似乎假定存在块类,并使用该类的实例,然后调用函数
getBlockName()

是产生问题的代码

如果您查看这一行:
getCaptcha($this->getFormId())

这应该返回一个块实例,但由于某些原因它没有返回


所以你需要检查你的Magento日志并调试为什么
getCaptcha($this->getFormId())
没有生成块。

对我来说,问题是
Mage::helper('captcha')->getCaptcha($this->getFormId())
没有返回它应该返回的类。原来
app/code/core/Mage/Captcha/Helper/Data.php
method
getCaptcha
没有返回模型,因为
$this->getConfigNode('type')
返回了
NULL
。这是我的缓存的一个问题。我们使用
var/cache
中的文件缓存以及Redis。一旦我清除了所有的缓存,这个问题就消失了


顺便说一下,
$this->getConfigNode('type')
尝试获取
admin/captcha/type
customer/captcha/type
的配置值,这两个值都不会在数据库的
core\u config\u data
表中找到。这些实际上是在
app/code/core/Mage/Captcha/etc/config.xml

中设置的。您好,请问在哪里可以找到日志文件夹?谢谢,当执行验证码时,将创建一些图像。因此,它需要根据Magento所需的任何内容。如果没有var文件夹,日志和缓存或所有临时内容将放在何处。请将var文件夹装箱,并确保权限正确,这可能会解决您的错误。通常,没有可写的var/文件夹本身就是一个致命错误,它将使Magento停止运行。必须有一个地方写临时文件。事实上,昨天刚碰到那个问题。没有写var/report文件的地方,所以我甚至无法找出哪里出了问题,直到我把它拼凑起来显示堆栈跟踪。
class Mage_Captcha_Block_Captcha extends Mage_Core_Block_Template
{
    /**
     * Renders captcha HTML (if required)
     *
     * @return string
     */
    protected function _toHtml()
    {
        $blockPath =     Mage::helper('captcha')->getCaptcha($this->getFormId())->getBlockName();