Schrift
[thread]11929[/thread]

Mason - merkwürdiges Verhalten von Komponenten

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
tsy
 2008-05-28 19:52
#110415 #110415
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Hallo!
Ich habe ein (für mich) merkwürdiges Verhalten von von mir programmierten Komponenten herausgefunden und hoffe, dass es mir jemand erklären kann.
Zur besseren Übersicht habe ich das ganze auf einige einfache Skripte heruntergebrochen. In meinem Komponenten-Wurzelverzeichnis befinden sich (unter anderem) die folgenden komponenten:
/autohandler
Code (perl): (dl )
1
2
<& lib.mas &>
% $m->call_next;


/lib.mas
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%perl>

sub printv {
        my $key = shift;
        return $key;
}

sub dateTime {
        my $i;
        my %result;
        my @datetime = localtime(time);

        $datetime[5] += 1900;
        $datetime[4] += 1;

        for ($i=0; $i < 5; $i++){
                $datetime[$i] = sprintf("%02d",$datetime[$i]);
        }
        my $dateString =        $datetime[5] . "-" . $datetime[4]. "-" . $datetime[3] . " " .
                                        $datetime[2] . ":" . $datetime[1] . ":" . $datetime[0];
        $result{'asString'} = $dateString;
        $result{'asTimestamp'} = time;
        return %result;
}

</%perl>


/test.html
Code (perl): (dl )
1
2
3
4
5
%print "eins <br>";
<% printv "zwei" %>
%print "drei <br>";
%my %res = dateTime;
%print $res{'asString'};


Starte ich meinen Apache, so bekomme ich zumindest beim ersten Laden der datei test.html den Fehler, dass bei printv ein String steht, aber ein Operator erwartet wird.
Genauer:
Code: (dl )
String found where operator expected

Ich gehe daher davon aus, dass lib.mas nicht includiert wurde.

Das selbe Verhalten beobachte ich auch in Seiten meiner Anwendung (alle im selben Verzeichnis wie die test.html). Beim zweiten mal laden funktioniert dann allerdings meißt alles problemlos. Es ist dort dann aber zwischendurch immer wieder mal so, dass die Seite mit dem gleichen Fehler wieder nicht angezeigt werden kann. Das ganze passiert für mich nach keinen erkennbaren Schema. "Funktioniert" einmal eine Seite, die diese lib.mas includiert einmal, so geht auch meine test.html ohne Fehler durch.

Über ein paar erleuchtende Ideen wäre ich sehr dankbar, ich trete nämlich gerade total auf der Stelle!

Viele Grüße,

tsy
Gast Gast
 2008-06-03 14:36
#110673 #110673
Hallo,

das gleiche Problem habe ich auch.
Wenn ich Funktionen inkludiere werden sie manchmal ausgeführt oder manchmal auch nicht.

Bis jetzt habe ich auch noch keine Lösung für das Problem gefunden.

Hat jemand vielleicht eine Idee woran das liegen könnte?
GwenDragon
 2008-06-03 15:56
#110682 #110682
User since
2005-01-17
14601 Artikel
Admin1
[Homepage]
user image
Ja, bei mir geht auch was nicht in den Kopf bei so wenig Hintergrundinformation ;)

Welches Betriebssystem?
Welches Perl?
Fahrt ihr mod_perl? Wenn ja welches?
Welche Apache-Version?
Sagt das errorlog des Apache was?
Welches HTML::Mason?
Schon mal HTML::Mason so eingestellt, dass Fehler angezeigt werden (falls Produktivsystem, dann mal nur Zugriff von localhost zulassen und dann schauen)?
tsy
 2008-06-10 14:11
#110934 #110934
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Hallo GwenDragon, da ich in Perl noch nicht so firm bin und mich auch in Mason/Apache, etc. erst einarbeite bitte ich, mir nachzusehen wenn Informationen fehlen. Ich reiche sie aber selbstverständlich gerne nach:

Windows XP
Apache/2.0.54
mod_perl/2.0.1
Perl/v5.8.7

im error.log finde ich ausser einem Fehler, dass er eine css-Datei, welche ich im falschen Verzeichnis hatte nichts Mason-spezifisches.
Interessant vielleicht
Code: (dl )
[Tue Jun 10 09:41:24 2008] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
was aber scheinbar eher mit mod_ssl zu tun hat als mit Mason.

Wie kann ich herausfinden, welche Mason-Version installiert ist? Es wird ein Gesamt-Paket genutzt, welches schon weitestgehend vorkonfiguriert war.
Was Fehler anzeigen betrifft: Nach schmökern in der Doku gibt es wohl 2 Fehlerarten; nach einer wird der Fehler im Browser angezeigt, nach der anderen ein einem Error-Log. Ich bekomme im Browser Fehler angezeigt - ist das das, was Du meintest?

Ich bin schon eine Weile am testen, aber im Moment versteckt sich der Fehler wieder und alles läft rund, so dass ich "leider" keine Fehlermeldungen produzieren kann.

Edit: ich habe jetzt eine Fehlermeldung erhalten:
Code: (dl )
Undefined subroutine &HTML::Mason::Commands::printv 

Das ist allerdings eine andere als jene, welche ich in meinem ersten Posting erhalten habe.
GwenDragon
 2008-06-10 16:48
#110939 #110939
User since
2005-01-17
14601 Artikel
Admin1
[Homepage]
user image
Verwendest du den CGIHandler oder den ApacheHandler?

Zu Debuggen:
Im Handler kannst du doch den Parameter error_mode angeben:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
		#error_mode => 'fatal', # Output to serverlog
error_mode => 'output',
#
#This may be brief , text , line , or html .
#These produce an error message with no trace,
#a multiline error with trace information,
#a single-line error with tab-separated fields (suitable for writing to a log),
#and a fancy HTML format.
error_format => 'html',
#error_format => 'line',

http://www.masonbook.com/book/appendix-b.mhtml
tsy
 2008-06-10 17:36
#110946 #110946
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Ich nutze den ApacheHandler. Wo kann ich den Parameter angeben?
Im Quellcode meiner Komponenten als flag?
GwenDragon
 2008-06-10 17:59
#110947 #110947
User since
2005-01-17
14601 Artikel
Admin1
[Homepage]
user image
Im ApacheHandler, wenn du den erzeugst.
tsy
 2008-06-16 16:37
#111065 #111065
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Hallo, leider kann ich Dir nicht ganz folgen.
Wo genau wird denn der Apache-Handler erzeugt und wo muss ich hin mit meinen Zeilen? Muss ich die apache.conf ändern?
GwenDragon
 2008-06-16 22:54
#111099 #111099
User since
2005-01-17
14601 Artikel
Admin1
[Homepage]
user image
Quote
Wo genau wird denn der Apache-Handler erzeugt

Jetzt muss ich mal ganz seltsam fragen: Wie konfigurierst und programmierst du denn Mason bitte?

tsy
 2008-06-17 11:04
#111130 #111130
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
GwenDragon+2008-06-16 20:54:00--
Quote
Wo genau wird denn der Apache-Handler erzeugt

Jetzt muss ich mal ganz seltsam fragen: Wie konfigurierst und programmierst du denn Mason bitte?

Da ich sowohl mit Perl als auch Mason noch nicht sehr vertraut bin habe ich mir eine Apache/Perl/Mason-Distribution heruntergeladen, welche schon weitestgehend vorkonfiguriert war. Ich habe dann nur noch einige Dinge in der Apache-Konfiguration angepasst und ich konnte im MasonCompRoot dann (bisher problemlos) loslegen. Ich bin nach den ersten Kapiteln in dem von Dir verlinkten masonbook vorgegangen; die letzten habe ich aber dann nur noch überflogen bzw. bin noch am lesen.
Ich hoffe ich habe nicht irgend etwas wichtiges vergessen - oder vielleicht schreiben wir auch an einander vorbei?

Viele Grüße,

tsy
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2008-05-28 19:52.