我安装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());