2010-12-10 18 views
2

Ich habe ein seltsames Problem hier. Ich verschiebe eine (funktionierende) Site auf einen neuen Apache-Server, auf den ich keinen direkten Zugriff habe (ich muss zwei Leute durchgehen, um etwas zu erledigen).

Die Website verwendet ein Perl-Skript namens adframe, um HTML-Templates zu analysieren. Die URLs, mit denen es aufgerufen wird, sehen wie /cgi-bin/adframe/index.html?x=something aus, wobei adframe das Skript ist. Das fehlende Suffix hat nie wirklich Probleme verursacht. Aber auf diesem neuen Ubuntu-Server ist $ENV{'QUERY_STRING'} immer leer. $ENV{'REQUEST_METHOD'} wird korrekt als GET angezeigt, aber die query_string zeigt nichts ...

Reguläre * .cgi-Skripte zeigen die Query_string ohne Probleme.

Aus den Protokollen habe ich festgestellt, dass der Server scheint fastcgi, mod_fcgid und der Server akzeptiert nicht einmal. Pl als Erweiterung für Skripts. Ich habe nicht so viel Erfahrung mit Server-Software, aber ich dachte, es könnte ein Problem mit dem Server sein, der adframe nicht als CGI-Skript akzeptiert und somit den query_string nicht korrekt weitergibt ... Kann mir jemand ein paar Hinweise geben, wo ich bin könnte den Administrator oder vielleicht etwas, was ich in .htaccess selbst tun könnte, zeigen? Wie auch immer, um sicherzustellen, dass adframe als CGI-Skript erkannt wird !? (Wenn das das Problem ist ...)

Jede Hilfe ist willkommen! thomas

EDIT: Ich habe weitere Details gefunden: Der Server hat einen LACK-Cache ... zu sein scheint, das ist zu meiner üblichen Konfigurationen der Hauptunterschied ist ... Auch die Art und Weise das Skript funktioniert, ist, wenn Sie anrufen/cgi-bin/adframe/somedir/somefile.html? x = etwas, $ ENV {PATH_INFO} gibt an, welche Vorlage analysiert werden soll und $ ENV {QUERY_STRING} ist nun die Abfragezeichenfolge. Jetzt ist die Abfragezeichenfolge leer, aber wenn ich/cgi-bin/adframe? X = irgendwas (ohne PATH_INFO) anrufe, erscheint die Abfragezeichenfolge! Hat jemand eine Idee, was hier vor sich geht? danke!

+0

Wird es tatsächlich ausgeführt? (Wird z. B. ein Fehler zurückgegeben oder wird er korrekt ausgeführt, als ob er ohne Parameter aufgerufen wurde)? Was passiert auch, wenn Sie dem Server eine passende POST-Anfrage senden? – DVK

+0

Hallo, danke für die Hinweise. Ja, es wird ausgeführt, als ob keine Parameter übergeben wurden und ja, POST erreicht das Skript (über STDIN) ... – thomas

+0

Ich habe auch gerade versucht, $ cgi-> param() die Abfrage-Zeichenfolge zu erhalten. Kein Glück. – thomas

Antwort

1

Verstanden. Der Cache VARNISH entfernt alle Abfragezeichenfolgen von statischem Inhalt (* .html usw.) ... puh

+0

+1 für das herauszufinden! – DVK

0

Gerade lief das gleiche Problem. Ich bin ein absoluter Neuling im Perl Scripting.

Ich habe versucht, folgende:

@values = split (/&/, $ENV{'QUERY_STRING'}); 

aber es didn `t

dies gearbeitet arbeiten:

@values = split (/&/, "$ENV{'QUERY_STRING'}"); 

nur für den Fall, wenn andere Neulinge in das gleiche Problem ran.