Warnung: include (File.php) ist in Autoload.php in Zeile 93 fehlgeschlagen

7

Ich habe mehrere Artikel dazu verfolgt, aber keiner löst mein Problem. Jede Anforderung vor Ort schreibt den folgenden Eintrag in das Systemprotokoll.

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

Ich habe Artikel gesehen und befolgt, die darauf hinweisen, dass dies mit dem Compiler zusammenhängt.

Was ich bisher gemacht habe

Ich habe die beiden Zeilen in kommentiert includes/config.php.

Löschte den Profiler vom Terminal gemäß dem Artikel von Herrn Storm: Magento Compiler .

Stellen Sie sicher, dass die Caches geleert sind und die Indizierung mehrmals ausgeführt wurde.

Verglich eine Vanille-Kopie von 1.7.0.2 CE und suchte nach Dateien, in denen möglicherweise meine eigene Codebasis fehlt (mit WinMerge).

Symlinks in admin deaktiviert.

Die Dateiberechtigungen wurden auf verschiedene Empfehlungen und wieder zurück geändert.


Ich habe auch festgestellt, dass die Profiler-Seite in admin unter Admin > System > Tools > Compilationvollständig leer ist, abgesehen von Navi und Fußzeile.

Jede Hilfe, wo bis jetzt, wäre sehr dankbar. Bitte fragen Sie, ob etwas unklar ist. Vielen Dank!

Jongosi
quelle
2
Gehe zu /lib/Varien/Autoload.php on line 93und benutze Magier mageDebugBacktrace()(es ist eine Funktion, also rufe sie direkt auf). Sehen Sie, woher diese File.php stammt. Verwenden if ($class === 'File') { mageDebugBacktrace(); }Sie diese Option, damit nicht bei jedem automatischen Laden der Klasse gedruckt wird. Ich hatte ein ähnliches Problem mit dem PHPUnit-Modul von Ecomdev.
Nevvermind
So hilfreich (für viele Anwendungen), vielen Dank!
Jongosi
Wenn Sie nur eine leere Seite sehen - es lohnt sich, einen Blick in den Quellcode zu werfen
Stefan
Versuchen Sie, den Code neu zu kompilieren. <br> System -> Tools -> Kompilierung -> Kompatationsprozess ausführen <br> und Cache aktualisieren.
Nmirach
@nevvermind i enthalten diesen Code if ($class === 'File') { mageDebugBacktrace(); }in lib/varien/autoload.phpwie hier: pastebin.com/yiZ0cjVy , aber immer noch gab es mir gleiches Problem ....
Baby - in Magento

Antworten:

6

Das Autoload versucht, die Datei für eine Klasse zu benötigen, die noch nicht in der Codebasis gefunden wurde. Da dies erforderlich ist, liegt File.phpes nahe, dass irgendwo im Code die Klasse File()aufgerufen wird, die in Ihrer Codebasis noch nicht vorhanden ist.

Wenn Sie die Stelle finden, an der diese Klasse instanziiert wird, haben Sie das Problem behoben.

Sander Mangel
quelle
5

Für das Follow-up mageDebugBacktrace()lieferte das folgende Ergebnis:

[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

Wenn Cache.phpich mir die Datei ansehe, kann ich sehen, dass der Teil 'Datei' der von Magento verwendete Standard-Backend-Cache-Typ ist, wenn keiner angegeben ist. Ich habe meine app/etc/local.xmlDatei geändert , um 'Datei' zu verwenden. Beachten Sie Großbuchstaben 'F':

Datei app/etc/local.xml:

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

Hoffe das hilft jemandem aus.

Jongosi
quelle
Ich weiß nicht, warum Magento solche Dinge fälschlicherweise dokumentiert, aber das Großbuchstaben 'F' hat es für mich getan.
func0der
@Jongosi, deine Lösung ist für mich gearbeitet. Vielen Dank. Danke
Abu Abu
2

Ich bin gerade auf eine seltsame Warnung gestoßen : include (somefile.php) ist in Autoload.php in Zeile 93 fehlgeschlagen, nachdem die Arbeit in einer gemeinsam genutzten Testumgebung abgerufen wurde und jemand anderes den Cache aktiviert hat.

Nicht genau dieser Fall, weil es erwähnt wird:

Stellen Sie sicher, dass die Caches geleert sind und die Indizierung mehrmals ausgeführt wurde.

Denken Sie also immer daran, den Cache zu überprüfen und zu deaktivieren / zu löschen, wenn Sie in einer gemeinsam genutzten Umgebung arbeiten, bevor Sie Stunden mit dem Debuggen verschwenden!

Mihai MATEI
quelle
1

Dieser Fehler beim Erstellen eines Objekts aus einer Klasse wie $obj = new GoogleClient();in Magento versucht, die Klassendatei mithilfe von herauszufindenAutoload.php

manisch
quelle
1

Es könnte auch ein Problem mit dem APC-Cache geben. Starten Sie apache2 neu oder führen Sie es apc_clear_cache();von PHP aus

Pawel Dubiel
quelle
1

Ich hatte das gleiche Problem und es stellte sich heraus, dass das Leeren des Redis-Cache es für mich behebt.

Über die Befehlszeile:

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

Hier ist die Dokumentation für den Fall, dass Sie keinen Socket verwenden:

https://briansnelson.com/Install_Redis_Caching_for_Magento

Ich hoffe, das hilft.

Tyrannisieren
quelle