警告:include(File.php)が93行目のAutoload.phpで失敗しました


7

これに関するいくつかの記事をフォローしましたが、私の問題を解決するものはありません。サイトでのすべての要求は、次のエントリをシステムログに書き込みます。

var/log/system.log

2013-10-09T12:53:50+00:00 ERR (3): Warning: include(File.php): failed to open stream: No such file or directory  in /var/public_html/domain.com/live/lib/Varien/Autoload.php on line 93
2013-10-09T12:53:50+00:00 ERR (3): Warning: include(): Failed opening 'File.php' for inclusion (include_path='/var/public_html/domain.com/live/app/code/local:/var/public_html/domain.com/live/app/code/community:/var/public_html/domain.com/live/app/code/core:/var/public_html/domain.com/live/lib:.:/usr/share/pear:/usr/share/php')  in /var/public_html/domain.com/live/lib/Varien/Autoload.php on line 93

これがコンパイラーに関連していることを示す記事を見て、それに従いました。

これまでに行ったこと

で2つの行をコメントアウトしましたincludes/config.php

Storm氏の記事Magento Compilerに従って、ターミナルからプロファイラーをクリアしました。

キャッシュが空にされ、インデックス作成が数回実行されていることを確認しました。

1.7.0.2 CEのバニラコピーを比較し、(WinMergeを使用して)自分のコードベースにない可能性のあるファイルを探しました。

管理でシンボリックリンクを無効にしました。

ファイルの権限をいくつかのさまざまな推奨事項に変更し、再び元に戻しました。


Admin > System > Tools > Compilationnavとフッターを除いて、にあるadminのプロファイラーページが完全に空白であることにも気付きました。

今どこへ行くのかどんな助けでもとてもありがたいです。不明な点はお問い合わせください。ありがとう!


2
/lib/Varien/Autoload.php on line 93Mageに移動して使用しますmageDebugBacktrace()(これは関数なので、直接呼び出します)。そのFile.phpがどこから来たかを見てください。if ($class === 'File') { mageDebugBacktrace(); }すべてのクラスのオートロードで印刷されないように使用します。EcomdevのPHPUnitモジュールでも同様の問題がありました。
nevvermind 2013年

(多くのアプリケーションで)とても参考になりました。ありがとうございました!
ジョンゴシ2013年

空白のページしか表示されない場合-ソースコードを確認する価値はあります
Stefan

コードを再コンパイルしてみてください。<br>システム->ツール->コンパイル->コンパイルプロセスの実行<br>とキャッシュの更新。
Nmirach

@nevvermind私はこのコード付属if ($class === 'File') { mageDebugBacktrace(); }lib/varien/autoload.phpのように、ここで:pastebin.com/yiZ0cjVyを、まだそれは....私は同じ問題を与えた
Magentoの中で赤ちゃんの

回答:


6

Autoloadは、コードベースでまだ見つからないクラスのファイルを要求しようとします。それは要求しFile.phpているので、コードベースのどこかFile()まだ存在しないコードのどこかでクラスが呼び出されるのは当然のことです。

そのクラスがインスタンス化されている場所を追跡すると、問題が修正されます。


5

フォローアップのためにmageDebugBacktrace()、以下の結果が提供されました:

[1] :
[2] :
[3] /var/public_html/domain.com/live/app/code/core/Mage/Core/Model/Cache.php:199
[4] /var/public_html/domain.com/live/app/code/core/Mage/Core/Model/Cache.php:119
[5] /var/public_html/domain.com/live/app/code/core/Mage/Core/Model/Config.php:1348
[6] /var/public_html/domain.com/live/app/Mage.php:462
[7] /var/public_html/domain.com/live/app/code/core/Mage/Core/Model/App.php:401
[8] /var/public_html/domain.com/live/app/code/core/Mage/Core/Model/App.php:295
[9] /var/public_html/domain.com/live/app/code/core/Mage/Core/Model/App.php:337
[10] /var/public_html/domain.com/live/app/Mage.php:683
[11] /var/public_html/domain.com/live/index.php:71

見るとCache.php、ファイル、私は何も指定されていない場合は「ファイル」の部分は、Magentoので使用されるデフォルトのバックエンドのキャッシュタイプは、あることがわかります。app/etc/local.xml「File」を使用するようにファイルを変更しました。大文字の「F」に注意してください。

ファイルapp/etc/local.xml

<cache>
    <backend><![CDATA[File]]></backend>
    ...
</cache>

それが誰かを助けることを願っています。


Magentoがそのようなものを誤って文書化する理由はわかりませんが、大文字の 'F'がそれを行いました。
func0der 2016年

@ジョンゴシ、あなたの解決策は私のために働いています。どうもありがとうございました。ありがとう
アブアブ2017

2

奇妙な警告が発生しました共有テスト環境で作業をプルした後、93行目のAutoload.phpでinclude(somefile.php)が失敗し、他の誰かがキャッシュを有効にしました。

それが言及されているので、これは正確なケースではありません:

キャッシュが空にされ、インデックス作成が数回実行されていることを確認しました。

したがって、共有環境で作業する場合は、何時間ものデバッグを無駄にする前に、必ずキャッシュをチェックして無効化/クリアしてください。


1

$obj = new GoogleClient();Magentoのようにクラスからオブジェクトを作成する際のこのエラーは、次を使用してクラスファイルを見つけようとします。Autoload.php



1

私はこれと同じ問題を抱えていて、redisキャッシュをフラッシュすることで解決しました。

コマンドラインから:

echo 'flushall' | redis-cli -s /path/to/sock

ソケットを使用していない場合のドキュメントは次のとおりです。

https://briansnelson.com/Install_Redis_Caching_for_Magento

お役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.