HTML::Mason funzt nicht
timothy
- cgi
0 Matti Maekitalo
Hi folks,
ich "spiele" gerade mit dem "Mason-Modul" rum. Leider läuft es nicht.
Installation: ok
mod_perl läuft
keine Fehlermeldungen in error.log
httpd.conf
<snippet>
LoadModule perl_module modules/mod_perl.so
ScriptAlias /perl-bin/ "n:/iperl/perl-bin/"
<Location /perl-bin>
SetHandler perl-script
PerlHandler Apache::Registry
PerlSendHeader On
Options +ExecCGI
allow from all
</Location>
PerlModule HTML::Mason::ApacheHandler
<Location /mason/datadir>
SetHandler perl-script
PerlHandler HTML::Mason::ApacheHandler
</Location>
</snippet>
Das sind lt. Doku die Mindesteinstellungen, die nötig sind.
Ich trage also in eine .html - Seite ein Mason-Tag ( <% 2+2 %> )ein. Aber dies wird nicht ausgewertet.
Also statt: "4" steht da eben "<% 2+2 %>".
Whats wrong?????
Gruß
timothy
use Mosche;
PerlModule HTML::Mason::ApacheHandler
<Location /mason/datadir>
SetHandler perl-script
PerlHandler HTML::Mason::ApacheHandler
</Location>
Das sind lt. Doku die Mindesteinstellungen, die nötig sind.
Funktioniert, obwohl mich das Fehlen von 'MasonDataDir' etwas stutzig gemacht hat.
Ich trage also in eine .html - Seite ein Mason-Tag ( <% 2+2 %> )ein. Aber dies wird nicht ausgewertet.
Also statt: "4" steht da eben "<% 2+2 %>".
Ich habe eben deine Konfiguration ausprobiert, und bei mir funktioniert es.
Blöde Frage: liegt die .html-Datei auch im DocumentRoot und _darin_ im Verzeichnis mason/datadir (ist also über http://bla/mason/datadir/deine.html erreichbar)? Denn nur darauf bezieht sich das <Location>.
use Tschoe qw(Matti);
Hi Matti,
Ich habe eben deine Konfiguration ausprobiert, und bei mir funktioniert es.
Kann schon sein. Habe festgestellt, daß
a) ich MasonDataDir noch explizit festlegen ,uß und dann <location /> auf Server-Root setzen muß.
PerlSetVar MasonCompRoot "n:/iperl/htdocs"
PerlSetVar MasonDataDir "n:/iperl/mason/datadir"
<Location />
SetHandler perl-script
PerlHandler HTML::Mason::ApacheHandler
</Location>
Jetzt versucht Mason zu parsen. Allerdings meckert er dann an, daß ihm Apache-Request fehlt. Das versuche ich gerade zu installieren. Allerdings sucht er mod_perl.so - ist vorhanden, findet er aber irgendwie nicht.
Denke mal, daran liegt es.
Gruß
Timothy
P.S. Fein, daß Du auch in de.comp.lang.perl mitliest. Aber die Mitteilung hättest Du Dir verkneifen können. Vielleicht ein dezenter Hinweis an mich (ev. per Mail) dies zu unterlassen wegen Verstoß gegen Netiquette hätte doch auch genügt. Mußt mich doch nicht so öffentlich bloß stellen ;-)
Nicht für ungut - ich versuche mich, daran zu halten.
aber: was, wenn ich in einem Forum/Newsgroup keine Antwort bekomme. "Darf" ;-) ich es dann auch woanders probieren?
use Mosche;
a) ich MasonDataDir noch explizit festlegen ,uß und dann <location /> auf Server-Root setzen muß.
Es hat mich erstaunt, aber es hat bei mir auch ohne MasonDataDir funktioniert, aber das angeben schadet nicht. Dass du location auf Server-Root setzen musst, ist nicht unbedingt nötig.
DocumentRoot /blah/htdocs
<Location /meinmasondir>
# Mason-Config
</Location>
bewirkt, dass eine Datei, die in /blah/htdocs/meinmasondir liegt (und mit http://bla/meinmasondir/... aufgerufen wird) durch HTML::Mason geparst wird.
Jetzt versucht Mason zu parsen. Allerdings meckert er dann an, daß ihm Apache-Request fehlt. Das versuche ich gerade zu installieren. Allerdings sucht er mod_perl.so - ist vorhanden, findet er aber irgendwie nicht.
Du verwendest anscheinend Apache 2. Das macht es ein wenig komplizierter, und die angebotenen Lösungen sind nicht ganz so elegant.
Lösung:
Schreib
PerlSetVar MasonArgsMethod CGI
in deinen Code. In mod_perl "2" (welches noch gar keine 2 ist) ist noch nicht ganz Feature-kompatibel mit m_p1.
Lies dazu unter anderem mal http://beaucox.com/mason/mason-with-apmp2-mini-HOWTO.htm, dass hat mir auch geholfen.
P.S. Fein, daß Du auch in de.comp.lang.perl mitliest. Aber die Mitteilung hättest Du Dir verkneifen können. Vielleicht ein dezenter Hinweis an mich (ev. per Mail) dies zu unterlassen wegen Verstoß gegen Netiquette hätte doch auch genügt. Mußt mich doch nicht so öffentlich bloß stellen ;-)
Ich wollte nur in dclp(c) darauf hinweisen, dass diese Frage quasi gelöst ist, und sich niemand unnötig Gedanken machen muß.
use Tschoe qw(Matti);
Du verwendest anscheinend Apache 2.
Nei: Apache 1.3.16 und mod_perl 1.25
Ich wollte nur in dclp(c) darauf hinweisen, dass diese Frage quasi gelöst ist, und sich niemand unnötig Gedanken machen muß.
Okay -- obwohl: gelöst ist es noch nicht.
Und zu meinem anderen Posting. Die source habe ich mittlerweile. Aber da ist keine apachecore.lib bei. Somit kann ich Apache-Request nicht installieren :-(
Das muß ich wohl den apache selber "bauen". :-(
Tschö mit ö
Timothy
Noch eine Frage Matti.
mod_perl.so hat er mittlerweile gefunden. Jetzt verlangt er aber noch eine Apachecore.lib. Und die habe ich nicht auf meinem Rechner. ich nutze Indigo-Perl (also unter WIN) mit einem bereits installlierten Apache. Wo kann ich die Apachecore.lib herbekommen? Muß ich dafür Apache neu "bauen"? Ich kenne mich in C nicht so aus. Oder reicht es, wenn ich die Source von apache.org lade und ist dann diese Apachecore.lib dabei?
Danke
Timothy
P.S. habe diese Frage nur hier gepostet !!!
;-))