0

私は自分のドメインでMagentoのバックエンドに実際にアクセスするのに一生苦労しています。数回再インストールしましたが、エラーがポップアップせずに入ることができません。これは最新のものです:

致命的なエラー: 149 行目の /app/code/core/Mage/Core/Helper/Js.php の非オブジェクトに対するメンバー関数 getAttribute() の呼び出し

管理エリアにログインすると、上記のエラーが表示されますが、それしか表示されません。更新してキャッシュをクリアし、別のブラウザーを使用して (最新バージョンの Firefox と Chrome を試しました)、同じエラーが発生しました。

誰か助けてくれませんか?私はこれを数日間行っており、自分でこれを理解しようとしています. しかし、私はすべてアイデアがありません。ありがとう!

Js.phpファイルは以下にあります

<?php

class Mage_Core_Helper_Js extends Mage_Core_Helper_Abstract { /** * キャッシュのキー */ const JAVASCRIPT_TRANSLATE_CONFIG_KEY = 'javascript_translate_config';

/**
 * Translate file name
 */
const JAVASCRIPT_TRANSLATE_CONFIG_FILENAME = 'jstranslator.xml';

/**
 * Array of senteces of JS translations
 *
 * @var array
 */
protected $_translateData = null;

/**
 * Translate config
 *
 * @var Varien_Simplexml_Config
 */
protected $_config = null;

/**
 * Retrieve JSON of JS sentences translation
 *
 * @return string
 */
public function getTranslateJson()
{
    return Mage::helper('core')->jsonEncode($this->_getTranslateData());
}

/**
 * Retrieve JS translator initialization javascript
 *
 * @return string
 */
public function getTranslatorScript()
{
    $script = 'var Translator = new Translate('.$this->getTranslateJson().');';
    return $this->getScript($script);
}

/**
 * Retrieve framed javascript
 *
 * @param   string $script
 * @return  script
 */
public function getScript($script)
{
    return '<script type="text/javascript">//<![CDATA[
    '.$script.'
    //]]></script>';
}

/**
 * Retrieve javascript include code
 *
 * @param   string $file
 * @return  string
 */
public function includeScript($file)
{
    return '<script type="text/javascript" src="'.$this->getJsUrl($file).'"></script>'."\n";
}

/**
 * Retrieve
 *
 * @param   string $file
 * @return  string
 */
public function includeSkinScript($file)
{
    return '<script type="text/javascript" src="'.$this->getJsSkinUrl($file).'"></script>';
}

/**
 * Retrieve JS file url
 *
 * @param   string $file
 * @return  string
 */
public function getJsUrl($file)
{
    return Mage::getBaseUrl('js').$file;
}

/**
 * Retrieve skin JS file url
 *
 * @param   string $file
 * @return  string
 */
public function getJsSkinUrl($file)
{
    return Mage::getDesign()->getSkinUrl($file, array());
}

/**
 * Retrieve JS translation array
 *
 * @return array
 */
protected function _getTranslateData()
{
    if ($this->_translateData === null) {
        $this->_translateData = array();
        $messages = $this->_getXmlConfig()->getXpath('*/message');
        if (!empty($messages)) {
            foreach ($messages as $message) {
                $messageText = (string)$message;
                $module = $message->getParent()->getAttribute("module");
                $this->_translateData[$messageText] = Mage::helper(empty($module) ? 'core' : $module
                )->__($messageText);
            }
        }

        foreach ($this->_translateData as $key => $value) {
            if ($key == $value) {
                unset($this->_translateData[$key]);
            }
        }
    }
    return $this->_translateData;
}

/**
 * Load config from files and try to cache it
 *
 * @return Varien_Simplexml_Config
 */
protected function _getXmlConfig()
{
    if (is_null($this->_config)) {
        $canUsaCache = Mage::app()->useCache('config');
        $cachedXml = Mage::app()->loadCache(self::JAVASCRIPT_TRANSLATE_CONFIG_KEY);
        if ($canUsaCache && $cachedXml) {
            $xmlConfig = new Varien_Simplexml_Config($cachedXml);
        } else {
            $xmlConfig = new Varien_Simplexml_Config();
            $xmlConfig->loadString('<?xml version="1.0"?><jstranslator></jstranslator>');
            Mage::getConfig()->loadModulesConfiguration(self::JAVASCRIPT_TRANSLATE_CONFIG_FILENAME, $xmlConfig);

            if ($canUsaCache) {
                Mage::app()->saveCache($xmlConfig->getXmlString(), self::JAVASCRIPT_TRANSLATE_CONFIG_KEY,
                    array(Mage_Core_Model_Config::CACHE_TAG));
            }
        }
        $this->_config = $xmlConfig;
    }
    return $this->_config;
}

}

4

1 に答える 1

0

キャッシュをクリアしましたか?どのように?セッションもクリアしましたか?現在、これらを手動でクリアしなければならない機能があり、自分で管理画面に入ることができます。これはSSHシェルからの出力です...

var# ls
./  ../  cache/  export/  locks/  log/  package/  pear/  report/  session/
var# rm -rf cache/*
var# rm -rf session/*

そのため、スタッフが SSH なしで実行できるように、Web ページ/php スクリプトを作成しました。

<pre><?php
$output;
$retval;
$errors="";
$command="pwd";
exec ( $command ,  &$output, &$retval  );
$path=$output[0];
unset($output);
echo "rm -rf $path/var/cache/*\n";
if( 0 ) {   // change to 1 after seeing the above looks ok!
    $command="rm -rf $path/var/cache/*";
    exec ( $command ,  &$output, &$retval  );
    echo "<b>$command</b> returned $retval\n";
    if($retval > 0)
        $errors .= "There was a problem deleting cache files.\n";
    // ------------------------------------------------
    $command="ls -alh $path/var/cache";
    exec ( $command ,  &$output, &$retval  );
    echo "<b>$command</b> returned $retval; the directory listing should only have . and ..\n\$output:";
    print_r($output);
    unset($output);
    // ------------------------------------------------
    $command="rm -rf $path/var/session/*";
    exec ( $command ,  &$output, &$retval  );
    echo "<b>$command</b> returned $retval\n";
    if($retval > 0)
        $errors .= "There was a problem deleting session files.\n";
    // ------------------------------------------------
    $command="ls -alh $path/var/session";
    exec ( $command ,  &$output, &$retval  );
    echo "<b>$command</b> returned $retval; the directory listing should only have . and ..\n\$output:";
    print_r($output);
    unset($output);
}
if( strlen($errors) == 0 )
    echo "<h2>Yaay! you can get into admin again...</h2>";
else
    echo "<h2 style=\"color:red\">Boo! something went wrong...</h2>$errors\n";
?></pre>

if(0) を 1 に変更した後、このファイル (私は と呼びます__cache_clear.php) にアクセスすると、出力は次のようになります。

rm -rf /home/username/public_html/var/cache/*
rm -rf /home/username/public_html/var/cache/* returned 0
ls -alh /home/username/public_html/var/cache returned 0; the directory listing should only have . and ..
$output:Array
(
    [0] => total 16K
    [1] => drwxrwxrwx  2 username username 4.0K May 13 19:42 .
    [2] => drwxr-xr-x 10 username username 4.0K May 10 15:17 ..
)
rm -rf /home/username/public_html/var/session/* returned 0
ls -alh /home/username/public_html/var/session returned 0; the directory listing should only have . and ..
$output:Array
(
    [0] => total 248K
    [1] => drwxrwxrwx  2 username username 232K May 13 19:42 .
    [2] => drwxr-xr-x 10 username username 4.0K May 10 15:17 ..
)
Yaay! you can get into admin again...

「ユーザー名」はウェブホスティング会社で割り当てられたユーザー名であり、異なることに注意してください。Magentoフォルダーに配置すると、スクリプトが適切に動作するように、スクリプトを動的にしました。

于 2012-05-14T00:52:01.883 に答える