Manchmal wird Perl ausgeführt - manchmal nicht ?!?

Bash, Shell, PHP, Python, Perl, CGI
stlas
Posts: 10
Joined: 2003-08-07 14:40
Location: Pforzheim

Manchmal wird Perl ausgeführt - manchmal nicht ?!?

Post 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
BlackEye
Posts: 81
Joined: 2003-09-04 11:02
Location: Eschwege

Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?

Post 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!?¿
stlas
Posts: 10
Joined: 2003-08-07 14:40
Location: Pforzheim

Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?

Post 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!
BlackEye
Posts: 81
Joined: 2003-09-04 11:02
Location: Eschwege

Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?

Post 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
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?

Post 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.
stlas
Posts: 10
Joined: 2003-08-07 14:40
Location: Pforzheim

Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?

Post 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! ;-)
stlas
Posts: 10
Joined: 2003-08-07 14:40
Location: Pforzheim

Noch ein interessantes Detail

Post 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:

Code: Select all

require '/hier/und/da/test2.pl';
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
User avatar
Joe User
Project Manager
Project Manager
Posts: 11176
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Manchmal wird Perl ausgeführt - manchmal nicht ?!?

Post 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...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.