Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Internal Zend error - Missing class information for ... language.php on line 21

    0815

    • Viel Schreiber
    • Beiträge: 905
    Guten Morgen,

    unser Root-Server hat sich letzte Nacht mit folgender Fehlermeldung verabschiedet und war nur noch durch einen Neustart wieder dazu zu bewegen, dass Shopsystem wieder erreichbar zu machen:

    Code: PHP  [Auswählen]
    [Wed Jul 23 04:58:30 2014] [error] [client 54.81.xxx.xxx] PHP Fatal error:  Internal Zend error - Missing class information for  in /var/www/vhosts/xxx.com/httpdocs/includes/classes/language.php on line 21

    Kann mir evtl. jemand erklären wodurch der Ausfall verursacht wurde?

    Vorab vielen Dank



    Linkback: https://www.modified-shop.org/forum/index.php?topic=30691.0

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Kein Plan, vor allem weil da was fehlt:
    Code: PHP  [Auswählen]
    Missing class information for  
    :glaskugel:

    Was ich tun würde: Zend Framework Version raussuchen, dann schauen ob da Bugs gemeldet sind, notfalls updaten.

    Matt

    • Experte
    • Beiträge: 4.241
    Irgendwelche Bytecaches wie APC am Start? Dann ist das vielleicht ein Einstiegspunkt:
    https://bugs.php.net/bug.php?id=59298

    @bonsai: Was hat das Zend Framework damit zu tun?

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Zitat
    ... Internal Zend error ...
    Ist das nicht das Framework, dass sich da beschwert?

    Matt

    • Experte
    • Beiträge: 4.241
    Nein. Es ist ja auch gar kein Zend Framework im Shop drin.

    0815

    • Viel Schreiber
    • Beiträge: 905
    Ja, APC-Cache ist in Verwendung.

    Bin da eben auch schon auf die Problematik gestoßen.
    Es wird wohl allgemein empfohlen von APC auf APCu zu wechseln: http://www.phpgangsta.de/apcu-der-neue-user-cache

    In dem Zusammenhang sollte wohl auch auf PHP 5.5 gewechselt werden.
    Zurzeit läuft auf dem Server 5.3.10.

    Ist der Shop problemlos mit PHP 5.5 kompatibel?

    0815

    • Viel Schreiber
    • Beiträge: 905
    Ups, habe soeben den Hinweis in der Downloadabteilung gefunden:

    Zitat
    PHP ab 5.x bis PHP 5.4.x

    Was mache ich denn nun am besten?
    Auf APC verzichten?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Was genau steht in der Zeile 21 und in der darüber in der in der Fehlermeldung genannten Datei ?
    Falls es so aussieht:
    Code: PHP  [Auswählen]
    if ( !class_exists( "language" ) ) {
      class language {
          CODE
    }
     

    teste mal das
    Code: PHP  [Auswählen]
    //if ( !class_exists( "language" ) ) {
      class language {
          CODE
    //}
     
    (nicht vergessen auch die schließende Klammer auszukommentieren !)

    oder, wenn das nicht hilft, versuche es so:
    Code: PHP  [Auswählen]
    if (in_array('language', get_declared_classes())) {
      class language {
          CODE
    }

    Gruß,
    noRiddle

    0815

    • Viel Schreiber
    • Beiträge: 905
    Hallo,

    vielen Dank für Deine Antwort und die Änderungsvorschläge für den Code.

    Der Code sieht aktuell noch so aus wievon Dir gezeigt.

    Ich weiß allerdings nicht, ob und wie ich testen kann, ob die Änderung das Problem zukünftig ausschließt.
    Der Error ist gestern erstmalig aufgetreten und den APC-cache verwenden wir schon seit ein paar Monaten. Wie kann ich den Fehler reproduzieren?

    Ein ähnlicher Fehler tritt nur dann auf, wenn ich eine Bestellung über das Modul "offene Warenkörbe plus" abschließe.
    Dabei wird zwar nicht der Server abgeschossen, aber ich komme dann nicht mehr ins Frontend (... nur noch weiße Seite). Erst wenn ich den Browser-cache (Firefox) leere und einen Browser-Neustart durchführe, funktioniert alles wieder normal. Das Backend ist dauerhaft erreichbar. Dieser Fehler verursacht demnach auch nur ein lokales Problem für den Admin.

    Irgendwie scheint APC beim modified einige seltsame Fehler zu verursachen.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Mmh, wie du den Absturz des Servers mit der Fehlermeldung reproduzieren kannst weiß ich auch nicht.
    Eventuell indem du die Sprache im Shop-Frontend mal mehrfach wechselst.
    Ich sehe aber auch keinen Grund für die Abfrage if(!class_exists("language")) in der class language,
    weshalb du's ja mal auskommentieren und die Sache weiter beaobachten kannst.

    Ich vermute schlicht, daß die Klasse je nach Fall und Seitenaufruf bereits regitriert und ge-cache-t ist und die Abfrage nicht greifen kann.
    Was genau steht denn nun in Zeile 21 ?, die if-clause oder die Klassen-Definition ?

    Zu "offene Warenkörbe plus" kann ich nichts sagen, klingt wie ein Fehler im Modul.

    Gruß,
    noRiddle

    0815

    • Viel Schreiber
    • Beiträge: 905
    Hallo,

    in Zeile 21 steht nur:

    Code: PHP  [Auswählen]
    class language {

    20-21 sieht dann so aus:

    Code: PHP  [Auswählen]
    if ( !class_exists( "language" ) ) {
      class language {
        var $languages, $catalog_languages, $browser_languages, $language;

    Was den Fehler mit dem Modul angeht, so tritt dieser nur bei aktiviertem APC-Cache auf.
    Der Fehler ist auch als APC-"white-page-of-death" bekannt. Warum er nur bei Verwendung des Moduls auftritt, konnte ich bisher auch nicht nachvollziehen.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Nein. Es ist ja auch gar kein Zend Framework im Shop drin.
    Naja, nicht direkt. Aber in Piwik schon ...
    http://de.wikipedia.org/wiki/Zend_Framework

    @0815, hast Du den Beitrag schon entdeckt?
    http://mysolr.com/tips/occasional-blank-pages-in-nginx-apc-php-fpm-or-php-cgi-wordpress-wp-super-cache/

    Damit könnte man die betroffene(n) Datei(en) des Moduls vom caching ausschließen.

    web0null

    • Experte
    • Beiträge: 1.998

    0815

    • Viel Schreiber
    • Beiträge: 905

    @0815, hast Du den Beitrag schon entdeckt?
    http://mysolr.com/tips/occasional-blank-pages-in-nginx-apc-php-fpm-or-php-cgi-wordpress-wp-super-cache/

    Damit könnte man die betroffene(n) Datei(en) des Moduls vom caching ausschließen.

    Hallo,

    auf die Seite bin ich auch schon gestoßen, musste mich hier jedoch zuerst noch um den heutigen Versand kümmern.

    Kann mann PHP Dateien nur per Name, oder auch per Pfad filtern?

    Also nur so:
    Code: PHP  [Auswählen]
    apc.filters = language

    oder geht auch:
    Code: PHP  [Auswählen]
    apc.filters = /includes/classes/language
    ... was zur exakteren Filterung besser wäre.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Du, ich hab da keinerlei Erfahrungen damit. Ich bin nur durch meine Jahrelange Tätigkeit für einen amerikanischen Autokonzern im Bereich Softwareverwaltung für CAD, CAE und CAT Workstations sehr gut darin geworden mit zu wenig Informationen Probleme iterativ zu lösen oder zu umschiffen. Eins der häufigsten gebrauchten Wörter in der Abteilung war "Workaround" ;-)
    Ich hatte oft Probleme entfernt bei denen sich drei Fachabteilungen um Zuständigkeit gestritten haben und keine davon vernünftige Informationen rausrücken wollte. Da hilft dann nur noch raten und testen.

    Ausprobieren, oder Google fragen! Da es die Funktion beeinträchtigen könnte, würde ich das mit dem ausprobieren allerdings nachts machen oder zumindest vorher schauen, dass keine Kunden mit vollen Warenkörben im Shop unterwegs sind.