Fatal error in .... [gelöst]

Deutschsprachiger Support für CMS Made Simple
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Fatal error in .... [gelöst]

Post by TeXnik »

Ich stehe vor einem unerklärlichen Phänomen.
Immer wieder mal kommt es bei dem Besuch meiner Webseite zu einem Fatal error.  Manchmal bei den Funktionen im Verzeichnis lib, manchmal bei den Plug-ins. Komisch ist auch, daß ein Fehler in einer Zeile angezeigt wird die nicht existiert. Ein Plugin hat zum Beispiel 50 Zeilen, der Fehler wird aber für die Zeile 153 angezeigt.

Verblüffend nun ist, daß dieser Fehler nach einiger Zeit wieder von selbst verschwindet und die Seite wieder zugreifbar ist. Z.B waren die letzten Änderungen am 25.7., der Fehler tauchte am 31.7. auf und heute am 1.8. war er wieder weg. Der Auslöser scheint demnach nicht in Änderungen oder Aktualisierungen zu liegen.

Woran kann es nun liegen? Was kann man machen, um diesen Fehler zu unterbinden? Meine erste Vermutung ist, daß es irgendwie mit dem Zwischenspeicher zusammenhängt.
Last edited by TeXnik on Thu Aug 19, 2010 5:19 am, edited 1 time in total.
hlf

Re: Fatal error in ....

Post by hlf »

Ich schaue in die Kugel sehe aber nur Dunst und keine Fehlermeldungen. :)
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: Fatal error in ....

Post by TeXnik »

;D meine eigene Kristallkugel ist noch eine RC 0.01 version. Ich hoffte ja es gäbe schon weit Bessere.
NaN

Re: Fatal error in ....

Post by NaN »

Ähm ...
Ich sehe immer noch keine Fehlermeldungen hier.
Das kann hinter den sieben Bergen wieder anders aussehen, aber solange Du uns nicht sagen kannst, wie genau denn nun diese Fehlermeldungen lauten, können wir alle exakt genausoviel etwas mit "Fatal Error in ... " anfangen, wie ein Schwein mit einem Uhrwerk.
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: Fatal error in ....

Post by TeXnik »

Ich habe die vollständige nicht gepostet, da ich sie nicht mehr zur Verfügung hatte. Schließlich hatte sich der fehler in Luft aufgelöst und die paar Male, wo es vorkam, war es immer ein anderes script.

Beim letztem Mal wurde ein Fehler in der Zeile 100 und nochwas des sripts translation.functions.php im Verzeichnis lib aus gegeben, bei früheren war mal die comment Funktion im Verzeichnis Plug-in betroffen.
Ich bekam jedes mal mails, daß die Seite einen Fehler aufwies, zweimal konnte ich selbst die Fehlermeldung sehen und prüfte die entsprechenden Dateien. Die waren jedoch unverändert. Da mir sonst nicht weiter einfiel verschob ich die Ursachensuche auf später, wenn mir mehr Zeit zur Verfügung stand. Bei einem späteren Aufruf war aber kein Fehler mehr da.

Manchmal erhalte ich smarty Fehler, die jedoch sofort bei einem reload der seite verschwinden. Mich macht stutzig, daß ein Fehler nicht permanent ist und sich von selbst behebt. Die jeweiligen scripte selbst scheinen es nicht zu sein. Darum auch meine vermutung, ob dies irgendwie mit dem cache zu tun haben könnte. Wie ist mir schleierhaft, da ich, wie auch recht häufig erwähnt, ein unbedarfter Nutzer bin und in den Tiefen von Soft- und hardware verloren bin.
NaN

Re: Fatal error in ....

Post by NaN »

Ich gehe jetzt einfach mal davon aus, dass Du CMSms 1.8.1 und PHP 5.2.4 oder höher hast.

Deine Vermutung mit dem Cache scheint richtig zu sein.
Lösche doch mal den Zwischenspeicher (sowohl via Backend als auch via FTP) und rufe Deine Seite auf.
Klick Dich da am besten durch alle Seiten durch.
Und rufe alle Seiten mindestens zweimal auf.
(sowas kann dauern, ich weiß)

Sollte da kein Fehler auftreten, halte ich es für eher unwarscheinlich, dass nochmal einer auftreten wird.

Am besten bitte doch mal die Leute, die sich via Email bei Dir wegen irgendwelcher Fehler melden, die komplette Fehlermeldung mitzuschicken.

Welche Module kommen denn zum Einsatz.
Vielleicht liegt es auch an einem der Module.
Die Tatsache, dass der Fehler nicht immer auftritt, könnte auch mit der Ereignisverwaltung zusammenhängen.

Verwendest Du die Pseudo-Cronjobs in den globalen Einstellungen?
cyberman

Re: Fatal error in ....

Post by cyberman »

Schon mal dran gedacht, die Systemintegrität zu prüfen?
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: Fatal error in ....

Post by TeXnik »

cyberman wrote: Schon mal dran gedacht, die Systemintegrität zu prüfen?
Nach dem ich vor längerer Zeit mal einen script-Virus einfing, habe ich eine Vergleichsinstallation auf meinem Rechner. So kann ich die dateien ziemlich schnell auf Veränderungen prüfen.

Nan, ja es läuft cms MLE 1.8.1 und php 5.2.42 auf dem virtuellen Server. Nun glaube ich, ich bin der Lösung ein Stück näher gekommen, es scheint vielleicht was mit dem Captcha-Modul zu tun zu haben. Dort wird bei einem Reload kein neues Captcha-Bild angezeigt und immer nur das eine aus dem Zwischenspeicher hervor geholt, mit dem Ergebnis, das die eingegeben Codes falsch sind. Ich wollte dann die Captcha-Einstellungen überprüfen und sah, daß dort nur reCaptcha zur Auswahl steht. Dieses captcha habe ich aber nicht eingestellt, es war mir phpCaptcha.

Ich hab auch nach Pseudocron gesucht, welches ich bewußt nie eingestellt habe, die Einstellung dort steht auf "Aller 1 Stunde". Muß ich dort was ändern? Und wenn ja, auf was?
Dickie
Forum Members
Forum Members
Posts: 82
Joined: Mon Nov 17, 2008 4:53 pm

Re: Fatal error in ....

Post by Dickie »

Schau Dir mal diesen Link an, und ich bin mir sicher der Fehler geht weg !

http://forum.cmsmadesimple.org/index.ph ... 886.0.html

Ich vermute einen Zusammenhang mit der erweiterten Einstellung: Den Zwischenspeicher automatisch alle N Tage leeren: (Globale Einstellungen - Weitere Einstellungen)

Nachdem dort 0 eingetragen hatte, war der Fehler verschwunden !

Gruss Dickie ;)
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: Fatal error in ....

Post by TeXnik »

Den Zwischenspeicher automatisch auf N-Tage (N=1) hatte ich gemacht, nachdem das Problem auftauchte, da ich einen Zusammenhang mit dem Zwischenspeicher vermutete. Hat aber nichts geholfen.

Danke für den Tip mit der Variablen, den auch die Fehlermeldung mit"$this" tauchte das ein oder andere Mal auf.

Wenn ich den Zwischenspeicher komplett lösche (Backend und FTP) kommt der smarty error wieder, der sich dann aber durch den Reload der Seite sofort wieder verabschiedet.
Die Fatal error sind jetzt seit ein paar tagen nicht mehr aufgetreten, wenn es so bleibt, schreibe ich auch das gelöst dazu.
hlf

Re: Fatal error in ....

Post by hlf »

Also mit "der Smartyfehler" kann man nichts anfangen wenn dieser nicht mal hier gezeigt wird, ansonsten basiert alles auf Vermutungen.
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: Fatal error in ....

Post by TeXnik »

hlf wrote: Also mit "der Smartyfehler" kann man nichts anfangen wenn dieser nicht mal hier gezeigt wird, ansonsten basiert alles auf Vermutungen.
Nun konnte der fehler wieder reproduziert werden.

Code: Select all

string(170) "Smarty error: [in module_db_tpl:Comments;default_display line 36]: syntax error: unrecognized tag: $smarty.session.Comments.message) (Smarty_Compiler.class.php, line 446)" string(138) "Smarty error: [in module_db_tpl:Comments;default_display line 36]: syntax error: unrecognized tag '' (Smarty_Compiler.class.php, line 590)"
Er tritt auf, wenn der Zwischenspeicher gelöscht wird und verschwindet sofort bei einem Reload der Seite.

An dieser Stelle wird das Kommentar-Plugin aufgerufen

Code: Select all

{cms_module module="comments" lang="$lang"}
Last edited by TeXnik on Fri Aug 13, 2010 1:15 am, edited 1 time in total.
NaN

Re: Fatal error in ....

Post by NaN »

TeXnik wrote:
An dieser Stelle wird das Kommentar-Plugin aufgerufen
Was heißt "an dieser Stelle"?
Wie ich das sehe ist das ein Fehler im Comments Template.
Dort wirst Du ja wohl kaum das Modul nocheinmal aufrufen, oder?

"Smarty error: [in module_db_tpl:Comments;default_display" sagt Dir auch genau in welchem Modul (comments), welches Template (default_display) und ob es sich um ein Datenbank oder Dateitemplate handelt (module_db_tpl).

Also wie sieht denn das Comments default_display Template aus?
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm
Location: Thailand

Re: Fatal error in ....

Post by TeXnik »

nein, ich hab mich wohl falsch ausgedrückt. In der Seite gibt es an dieser Stelle nur den Modulaufruf.

Code: Select all

<div id="comments">
<!-- Start Comments Display Template -->

{if $items}
<ul>
{/if}
{foreach from=$items item=entry}
	<li class="{$entry->cssclass}">{if $entry->comment_title}<strong>{$entry->comment_title}</strong><br />{/if}
	{if $entry->comment_author}
            {* note, one could use the $entry->author_email field here, and the smarty mailto tag to generate a mailto link to this author, but it is not done by default. *}
            {$entry->comment_author} - 
        {/if}
	{if $entry->author_website}
            <a href="{$entry->author_website}" target="_blank">{$entry->author_website}</a> - 
	{/if}
	{* {$entry->date}<br /> *}
	{$entry->comment_data}
	</li>
{/foreach}
{if $items}
</ul>
{/if}

{if FALSE == $errormessage}
{startExpandCollapse id="name" title="$addacomment"}
{else}
{$errormessage}
{/if}
<h3>{$addacomment}</h3>

{if isset($smarty.session.Comments.error)}
  {* display an error message from the comments module *}
  <div style="text-size: 1.5em; color: red;">{$smarty.session.Comments.error}</div>
{elseif isset($smarty.session.Comments.message)}
  {* display an optional message from the comments module *}
  <p style="text-size: 1.5em; color: green;">{$smarty.session.Comments.message)}</p>
{/if}

{$startform}
{$image}
{if $spamprotect}
{$spamprotectimage}<br />
{/if}

<table>
{if $spamprotect}
	<tr>
		<td>{$entercodetxt}:</td>
		<td>{$inputentercode}</td>
	</tr>
{/if}
	<tr>
		<td>{$titletxt}:</td>
		<td>{$inputtitle}</td>
	</tr>
	<tr>
		<td>{$yournametxt}(*):</td>
		<td>{$inputyourname}</td>
	</tr>
	<tr>
		<td>{$emailtxt}:</td>
		<td>{$inputemail}</td>
	</tr>
	<tr>
		<td>{$notifytxt}:</td>
		<td>{$inputnotify}</td>
	</tr>
	<tr>
		<td>{$websitetxt}:</td>
		<td>{$inputwebsite}</td>
	</tr>
	<tr>
		<td>{$commenttxt}(*):</td>
		<td>{$inputcomment}</td>
	</tr>
	<tr>
		<td> </td>
		<td>{$submit} {$cancel}</td>
	</tr>
</table>

{$endform}
{if FALSE == $errormessage}
{stopExpandCollapse} 
{/if}

<!-- End Comments Display Template -->
</div>
Ich habe nur das Datum auskommentiert, da immer nur der 1. Januar 1970 ausgegeben wurde.

Warum verschwindet aber die Fehlermeldung bei einem Reload, wenn es einen Fehler gibt?
NaN

Re: Fatal error in ....

Post by NaN »

Diesen Abschnitt verstehe ich nicht ganz:

Code: Select all


{if isset($smarty.session.Comments.error)}
  {* display an error message from the comments module *}
  <div style="text-size: 1.5em; color: red;">{$smarty.session.Comments.error}</div>
{elseif isset($smarty.session.Comments.message)}
  {* display an optional message from the comments module *}
  <p style="text-size: 1.5em; color: green;">{$smarty.session.Comments.message)}</p>
{/if}

Wozu soll das gut sein? Wieso wird beim Comments Modul die "message" oder der "error" nicht einfach ebenso wie die "errormessage" dem Template als Variable zugewiesen. Wozu dieses Session Zeug?
Kenne mich mit dem Comments Modul nicht aus, wenn mich da mal jemand erleuchten könnte...

Möglicherweise gibt es hier bei Dir einfach nur ein Problem mit Sessions.
Warum auch immer und wieso auch immer nur manchmal.
Keine Ahnung.
Klingt für mich nach einem Smarty- bzw. einem serverseitigen Problem.

Nimm den Teil mal raus.
Bzw. schau mal mit Hilfe von {get_template_vars} was es sonst noch so für Variablen im Comments Template gibt.
Eventuell gibt es dafür ja noch eine Alternative.

Wieso der Fehler nach dem Reload nicht nochmal auftritt, weiß nur Smarty allein.
Ich vermute mal folgendes:
Die Meldung wird von der Template Engine Smarty ausgegeben, nicht vom Server selbst. D.h. beim ersten Laden der Seite versucht Smarty irgendwas zu machen. Wenn das nicht geht, gibt Smarty einen Fehler aus. Die PHP Scripte werden deshalb aber nicht abgebrochen. D.h. der Zwischenspeicher wird dennoch geschrieben. Dabei werden aber die Fehlermeldungen nicht mit gecached.

Beim Reload wird die Seite aus dem Zwischenspeicher generiert. Hier kommt Smarty nicht mehr zum Einsatz. D.h. es kommt auf die PHP Einstellungen an, ob irgendwelche Fehler ausgegeben werden sollen. Ich vermute mal, dass die bei Dir ausgeschaltet sind.

Hast Du schonmal in der config.php $config['debug'] = true gesetzt?
Mach das mal.
Auch hier mal mit gelöschtem Zwischenspeicher und mal ohne probieren.
Post Reply

Return to “German - Deutsch”