致命错误:在/Applications/XAMPP/xamppfiles/htdocs/magento/app/Mage


Fatal error: Call to a member function getModelInstance() on a non-object in /Applications/XAMPP/xamppfiles/htdocs/magento/app/Mage.php on line 463

我安装magento 1.9.0.0并复制到我的xampp htdocts当我运行localhost/magento这个错误显示,我已经完成了解决方案,但它没有工作。

Fatal error: Call to a member function getModelInstance() on a non-object in    
 /Applications/XAMPP/xamppfiles/htdocs/magento/app/Mage.php on line 463

下面是代码脚本:

public static function getModel($modelClass = '', $arguments = array())
  {
    return self::getConfig()->getModelInstance($modelClass, $arguments);
  }

问题与某些写权限有关。设置以下目录的写权限:app/etc, var and media .

cd /xampp-folde/htdocs/magento
chmod -R 777 app/etc
chmod -R 777 var
chmod -R 777 media

如果您在脚本外部访问Magento时遇到此错误

在使用权限之前,应该首先考虑这里给出的解决方案。

Mage::init(); // 1.5+

Mage::app(); // (pretty much anything) below 1.5

如果您正在运行自定义脚本,您可能已经忘记设置当前存储

例子:

Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
Mage::app()->setCurrentStore('my_store_id');

如果您不设置存储,则调用Mage::getModel将导致上述错误。

真正导致问题的是您的Magento安装目录和文件没有正确的权限。默认情况下,XAMPP以名为daemon的用户身份运行Apache。如果你不想这样,你可以在httpd.conf中改变它。这就解决了问题,而不需要做任何其他事情。

但是您也可以更改文件的所有者。你不应该仅仅通过告诉chmod 777就允许每个人访问你的文件。如果您将文件移动到生产环境中,那么文件的丢失是一个主要的安全问题。

不要执行chmod 777,而是使用chown更改目录的所有者。转到您的Magento目录(在您的示例中是cd /Applications/XAMPP/xamppfiles/htdocs/magento/),并使用此命令递归地将所有文件和目录的所有者更改为daemon:

sudo chmod -R daemon .

你应该先初始化Magento框架:

/* Store or website code */ 
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
/* Run store or run website */ 
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
Mage::init($mageRunCode, $mageRunType, array());