2017-11-07 11 views
0

私はMagentoの管理側にアクセスできません白い画面が表示されており、エラー報告を有効にするとメッセージが表示されます:インクルードのために '.../includes/src/__ adminhtml.php'を開くことに失敗しました

Array 
(
    [type] => 2 
    [message] => include_once(): Failed opening '/home/domain/www/www/includes/src/__adminhtml.php' for inclusion (include_path='/home/domain/www/www/includes/src:.:/usr/local/php56/lib/php') 
    [file] => /home/domanin/www/www/includes/src/Varien_Autoload.php 
    [line] => 108 
) 

基本的には、コンパイル済みのファイルを消去してコンパイルを再実行した後、インクルードフォルダ内に__adminhtml.phpファイルを保存せず、キャッシュをクリアしてもすべてが同じです。私が実行したときに無効状態:

一つ奇妙なことは、私はいつもコンパイラを取得していますということです

php -f shell/compiler.php -- state 

でも実行した後:

1. php -f shell/compiler.php -- disable 
2. php -f shell/compiler.php -- clear 
3. php -f shell/compiler.php -- compile 
4. php -f shell/compiler.php -- enable 

誰かがこれを助けることはできますか?私1.9.3.6インスタンスで

+0

あなたはそれが正確に状況を報告するために 'shell'フォルダ内から' compiler.php'を実行する必要があります。 – Joe

+0

@Joeはい、私は '実行するときに、正しいです - 'それはReportsフォルダshell'内からstate'コマンド: 'コンパイラステータス:有効 コンパイル状態:コンパイル 収集ファイル数:7159 コンパイルスコープカウント:4' それでは問題はありません:/ – xcentric

+0

あなたはMagentoのどのバージョンを使用していますか? – Joe

答えて

0

__adminhtml.phpは発生しません。

しかし、Varien_Autoload.phpで、あなたのサイトはこちらを壊している:

static public function registerScope($code) 
    { 
     self::$_scope = $code; 
     if (defined('COMPILER_INCLUDE_PATH')) { 
      @include_once COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . self::SCOPE_FILE_PREFIX.$code.'.php'; 
     } 
    } 

具体的には、ライン108:

@include_once COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . self::SCOPE_FILE_PREFIX.$code.'.php'; 

@シンボルは、それはdoesnの場合、それはエラー出力はならないことを意味ファイルが見つかりません。

私はlib/Varien/Autoload.phpで、この行を確認し、それがないかどう@記号を追加します。また、それがapp/code/local/Varien/Autoload.phpにコピーされていることを確認し、そこにも修正してください。その後、コンパイルプロセスをクリアして再実行します。

それは問題ではない場合、それはエラー報告に関連している可能性が。ここをクリックしてください:http://php.net/manual/en/language.operators.errorcontrol.phpファイルが見つからない場合、何かがエラーをスローするようにデフォルトの動作をオーバーライドする可能性があります。

カスタムエラーハンドラを設定している拡張機能やツールを持っているかもしれません。 set_error_handlersetErrorHandlerをgrepし、任意のファイルがapp/code/localまたはapp/code/communityに出てくるかどうかを確認します。 error_reportingがゼロの場合、falseを返すようにエラーハンドラを修正する必要があります。例:

// From: http://php.net/manual/en/function.set-error-handler.php 
if (!(error_reporting() & $errno)) { 
    // This error code is not included in error_reporting, so let it fall 
    // through to the standard PHP error handler 
    return false; 
} 

それは拡張子ない場合は、見て最後の場所はfunctions.phpです。既定のエラーハンドラーmageCoreErrorHandler()がデフォルトで使用されます。おそらく修正されているでしょう。 app/code/local/Mage/Core/functions.phpにコピーがあるかどうか確認してください。そうした場合、mageCoreErrorHandler()メソッドを1.9.3.6ソースのコードに置き換えるか、上の例のように修正してください。

ローカルにコピーがない場合は、コアfunctions.phpファイルが破損している可能性があり、1.9.3.6ソースの新しいコピーで置き換える必要があります(カスタマイズした場合はapp/code/localにコピーしてください)。エラー報告を修正し、変更されていない1.9.3.6のバージョンをapp/code/coreに保存してください)。

+0

'lib/Varien/Autoload.php'内の行は、あなたと同じです。そこには奇妙なことはありませんが、 'app/code/local'の中にVarienはありません。 また、私のindex.phpに 'ini_set( 'error_reporting'、E_ERROR);を置くことで、エラー報告が私によって有効になりました。 – xcentric

+0

私はいくつかの他の提案で私の答えを更新しました。 – Joe

関連する問題