0

誰でもこれを手伝ってくれます、それは非常に奇妙で、私はアイデアを使い果たしました.

includes/config.php の 2 行をコメントアウトして手動でコンパイラを無効にしました。また、includes/src および includes/stat ディレクトリも完全に削除しましたが、製品を編集しようとすると、magento が原因でエラーが発生します。コンパイルされた includes/src フォルダー (もう存在しない) にファイルを含めようとしています。

また、別のエラーが発生したときに、コンパイルされたサイトで再コンパイルしてアクセスしようとしました。

Fatal error: require_once(): Failed opening required 'Mage/Adminhtml/Block/Widget/Grid.php' (include_path='/content/includes/src:.:/usr/share/pear:/usr/share/php') in /content/includes/src/Uni_Fileuploader_Block_Adminhtml_Widget_Grid.php on line 9

サイトを並べ替えて、少なくともコンパイラを無効にして編集し、コンパイルされたサイトの問題を処理できるようにすることを考えていますが、コンパイラが無効になっている場合でも、magento がコンパイルされたファイルにアクセスしたいように見えるため、現在どちらも実行できません。

1.7.0.2 を実行中

さらに、これは関連している場合と関連していない場合があります。

コマンド ラインから compiler.php を実行すると、次のような一連の警告が表示されますが、コンパイル プロセスはまだ機能しているようです。

PHP Warning:  include(): realpath failed to canonicalize Mage/Core/Model/App.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Varien/Event/Collection.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Varien/Event/Observer/Collection.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Mage/Core/Model/Config.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Mage/Core/Model/Config/Base.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Varien/Simplexml/Config.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Mage/Core/Model/Config/Options.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Varien/Object.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Varien/Profiler.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Zend/Log.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Mage/Core/Model/Store/Exception.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Mage/Core/Exception.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Zend/Log/Formatter/Simple.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Zend/Log/Formatter/Interface.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Zend/Log/Writer/Stream.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Zend/Log/Writer/Abstract.php - bailing in /content/lib/Varien/Autoload.php on line 93
PHP Warning:  include(): realpath failed to canonicalize Zend/Log/FactoryInterface.php - bailing in /content/lib/Varien/Autoload.php on line 93
4

2 に答える 2

1

質問の 2 番目の部分について: ひょっとして APC を使用していますか?

この場合、このバグ レポートはあなたに関係があるかもしれません。手短に言うと、Debian ベースのシステムで APC 構成を編集して、次のよう/etc/php5/conf.d/20-apc.iniに設定します。

apc.stat=1

APC と magento キャッシュを消去してから、コンパイラを再度実行してください。

于 2013-08-09T10:51:21.473 に答える
0

apc.stat=1この機能はインストールを高速化するため、オフにしたくありません。修正はありますが、コアのコードを変更する必要があるため、これは最大の修正ではありません。

ファイル「lib/Varien/Autoload.php」に移動し、93 行目までスクロールします。

変化する

return include $classFile;

あり(最も美しい修正ではありません)

if (file_exists(realpath(dirname(dirname(dirname(__FILE__)))).'/app/code/core/'.$classFile) or
    file_exists(realpath(dirname(dirname(dirname(__FILE__)))).'/app/code/community/'.$classFile) or
    file_exists(realpath(dirname(dirname(dirname(__FILE__)))).'/app/code/local/'.$classFile) or
    file_exists(realpath(dirname(dirname(dirname(__FILE__)))).'/lib/'.$classFile)) {
        return require_once $classFile;
    } else {
        return include $classFile;
    }

関数を使用している理由file_existsは簡単です。include()インクルードされたファイルが存在せず、スクリプトが実行され続ける場合、関数はエラーを返します。関数require()もエラーを出しますが、スクリプトの実行を停止します。この修正により、Magento は常に実行されるのと同じように実行され続けますが、APC キャッシュ エラーがなく、インクルード ファイルが存在しない場合、Magento インストールは実行され続け、レンダリングが停止しません。

APC 拡張機能をダウングレードすることもできます。バージョン 3.1.9 (最後の安定バージョン) では、このエラーは発生しません。

于 2013-10-16T08:34:15.227 に答える