Page 1 of 1
Manchmal wird Perl ausgeführt - manchmal nicht ?!?
Posted: 2005-09-26 18:32
by stlas
Hallo,
ich habe ein eigenartiges Problem: manchmal werden Perl-Sripte auf meinem Root-Server ausgeführt (und korrekter HTML-Code zurückgeliefert), manchmal bietet der Browser (egal welcher) den Download an und per Shell wird IMMER der korrekte Code zurückgeliefert....
error.log bringt nichts und access.log meldet "200" für erfolgreiche Vermittlung...
mod_perl ist natürlich im Plask für diese Domain eingeschaltet.
Ich habe mehere 1&1 Rooties. Dieser hat nun Plesk 7.5.4 und Apache2. Damit kenne ich mich noch nicht besonders aus.
Hat jemand eine Idee? Es eilt leider ein wenig...
Danke für Euren Hirnschmalz!
Stefan
Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?
Posted: 2005-09-27 17:31
by BlackEye
handelt es sich denn dabei um dasselbe Skript, welches mal ausgeführt wird und mal nicht? Oder ist es immer dasselbe Skript, welches geht und ein anderes wiederum nicht?
btw wäre dieser Artikel sicherlich im Apache-Forum besser aufgehoben gewesen!?¿
Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?
Posted: 2005-09-27 17:43
by stlas
BlackEye wrote:handelt es sich denn dabei um dasselbe Skript, welches mal ausgeführt wird und mal nicht? Oder ist es immer dasselbe Skript, welches geht und ein anderes wiederum nicht?
Ja, der Server reagiert einmal so, dann wieder anders - bei ein und dem selben Script! Erst wird es ausgeführt, beim Reload wiederum wird nur der Download angeboten und ein anderes Mal wird es teilweise ausgeführt. An Perl selbst liegt es nicht, dann in der Shell funktioniert es tadellos mit allen Scripten und immer.
BlackEye wrote:btw wäre dieser Artikel sicherlich im Apache-Forum besser aufgehoben gewesen!?¿
Mag sein, da es jedoch um die Ausführung von Skripten geht, hab ich es hier versucht ;-)
In der Zwischenzeit habe ich den Server neu aufsetzen lassen und lediglich ein Update von Plesk 7.5.3 auf 7.5.4 gemacht.
Immer noch / wieder das gleiche Ergebnis.
Danke für Eure/Deine Mühe!
Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?
Posted: 2005-09-27 18:01
by BlackEye
stlas wrote:Erst wird es ausgeführt, beim Reload wiederum wird nur der Download angeboten und ein anderes Mal wird es teilweise ausgeführt
Hmm... sowas liebe ich persönlich ja.
Ich hab keine Idee passend in meiner nicht vorhandenen Schublade. Ich könnte Dir nur sagen, wie ich jetzt einfach mal weiter vorgehen würde, in der Hoffnung, etwas verdächtiges zu finden um den Fehler einzugrenzen (brute-force).
- Löschen der access.log und der error.log (der Ã?bersicht wegen)
- erhöhen der Debung infos (ob es so einen Schalter im apache gibt? Sicherlich, oder? Ich gehe zumindest mal davon aus
- auf der Client-Seite ein telnet öffnen und damit die GET-Anforderung mehrfach an den Server schicken. Vorzugsweise ein simples Perl-Skript. Sowas wie nen HelloWorld. Damit Du nicht unnötig zugemüllt wirst mit Output vom Server.
- nach dem ersten Auftreten des Fehlers (das Skript sendet also kein 'Hello World' mehr sondern irgendwas anderes), die Rückgabe im Telnet studieren und die error.log und access.log genauestens nach Fehlern und merkwürdigen Passagen durchsuchen
Irgendwo muss ja doch der Fehler zu finden sein. Man müsste erstmal eingrenzen können, an welcher Stelle der Fehler passiert. Testweise könnte man auch das mod_perl mal deaktivieren...
Danke für Eure/Deine Mühe!
Ich bin dem Adel noch nicht beigetreten ;) Aber danke für die Blumen *g*
Grüsse
Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?
Posted: 2005-09-27 18:40
by Roger Wilco
Von der Fehlerbeschreibung hört sich das Ganze wie der gleiche Fehler an, der auch mit mod_php und Apache 2 (mpm-prefork) auftritt. Die Einstellungen eines VirtualHosts, bei dem mod_perl deaktiviert ist, scheinen in andere Prozesse zu "leaken", weshalb die Perlskripte dann nicht geparsed werden.
Probier mal ein anderes MPM aus oder versuche mod_perl mal explizit in den gewünschten VHosts zu aktivieren.
Als CGI würde wahrscheinlich alles funktionieren.
Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?
Posted: 2005-09-27 19:02
by stlas
Roger Wilco wrote:Von der Fehlerbeschreibung hört sich das Ganze wie der gleiche Fehler an, der auch mit mod_php und Apache 2 (mpm-prefork) auftritt.
Hmmmm. Ich versuchs mal zu verstehen.... Was heißt "forken" nochmal?
Roger Wilco wrote:Die Einstellungen eines VirtualHosts, bei dem mod_perl deaktiviert ist, scheinen in andere Prozesse zu "leaken", weshalb die Perlskripte dann nicht geparsed werden.
Parsen und VirtualHosts verstehe ich noch, bei "leaken" endet es dann wieder. Sorry!
Roger Wilco wrote:Probier mal ein anderes MPM aus oder versuche mod_perl mal explizit in den gewünschten VHosts zu aktivieren.
Als CGI würde wahrscheinlich alles funktionieren.
Was ist ein MPM? Ich weiß, ich bin (noch) doof....
Plesk verbietet eigentlich das Hantieren in der "httpd.include" für die Domains.
Thema CGI - In der 1&1 Installation (vielleicht liegt es ja am Plesk) werden ".cgi" Files überhaupt nicht als Perl-Skripte erkannt. - Das haber nur als Hinweis....
Also, kannst Du das ein bisssschen genauer beschreiben, was ich probieren sollte???? Bitte! DANKE! ;-)
Noch ein interessantes Detail
Posted: 2005-09-27 19:45
by stlas
Hier gibt es weitere Eigentümlichkeiten.
Was für mich auch nicht nachvollziehbar ist: Skripte, die auf andere Skripte verzweigen benötigen absolute Pfadangaben! Also von test1.pl aus test2.pl kann nur per absolutem Pfad eingebunden werden:
Alles andere liefert etwa folgende Fehlermeldung im error.log:
Code: Select all
ModPerl::Registry: Can't locate test2.pl in @INC (@INC contains: /srv/www/perl-lib /usr/local/psa/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/5.8.3/i586-linux-thread-multi ...
Es ist, als wenn das Skript nicht wissen würde, von wo aus es läuft.
Ach ja, noch etwas: Kurze (einfache) Testskripte funktionieren auch über die CGI-Schnittstelle fehlerlos. Ich habe noch nicht herausfinden können warum welche Skripte nicht mehr korrekt gehen. Aber bereits bei simplen Guestbook-Skripten funktioniert es nicht mehr.
Und zur Erinnerung: In der Shell funktioniert alles.
????????
Gruß Stefan
Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?
Posted: 2005-09-27 19:56
by Joe User
Du musst die Scripte entweder mit absoluten Pfaden includieren, oder die (zu includierenden) Scripte unterhalb von /srv/www/perl-lib ablegen. Sollte aber auch in der Doku zu mod_perl stehen...