Halihallo Alexander
Probier mal aus, die EXE aus einem Perl-Script heraus aufzurufen, das vom Apachen gestartet wird:
Wenn man mit den Varianten von dir die test.exe entweder über
Backticks oder Pipes einliest würde man vermuten, dass die .exe
einfach gar nix ausgibt (so sieht es aus). In Wahrheit vermute ich,
dass auch der perl-Interpreter ein Access Denied bekommt und die
Skalare einfach mit undef besetzt.
#!perl
system "D:\path\to\simplecgi.exe";
500-er, da keine Header (denn von test.exe wird nix geliefert).
#!perl
use CGI::Carp qw(fatalsToBrowser);
open PIPE,"D:\path\to\simplecgi.exe|" or die $!;
print while <PIPE>;
close PIPE;
ebenfalls nix.
#!perl
D:\\path\\to\\simplecgi.exe
;
ebenfalls nix.
(Alles mehr oder weniger equivalent, simplecgi.exe sollte nicht von STDIN lesen - da kommt nämlich nichts.)
Klar.
simplecgi.c sieht ungefähr so aus:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
printf("%s","Content-type:text/plain\r\n\r\nHello World\n");
return 0;
}
ebenfalls nix (im HTTP-Kontext). Hatte ich schon ausprobiert.
---- zusammenfassend ----
Versuche ich die Executable über Pipes, Backticks, ... allgemein IPC
einzulesen, dann funktioniert das alles wunderbar von der Konsole
aus (getestet!) aber keines funktioniert im HTTP-Umfeld (Apache).
Also: Von Apache starten => Geht net. Von Konsole starten => alles
wie gewünscht und erwartet.
Der Verdacht liegt nahe, dass SYSTEM einfach keinen Zugriff darauf
hat, der USER jedoch schon.
Ich werde nachher den Computer neu starten, wer weiss, welche
versteckten Schutzmechanismen Windows noch aktiv hat, die eigentlich
schon lange nicht mehr gebraucht werden. Vielleicht hat es ja nicht
gemerkt, dass ich schon lange nicht mehr editiere... Obwohl,
die .exe habe ich seit Start _nie_ angefasst. Aber die Erfahrung mit
Windows leert eines: "Rebooten ist nie falsch."
---- /zusammenfassend ----
Wenn's aus Perl läuft und direkt nicht, dann hast Du "ein echtes Problem"(TM) ;-)
Nun ja, es funktioniert auch aus Perl aus nicht und dennoch habe ich "ein echtes Problem"(TM) :-)
Oh ja, und benutze keine auf .EXE endende URL im IE, das Theater mit IE und MIME Types solltest Du ja kennen. Workaround für IE: Als URL http://localhost/cgi-bin/simplecgi.exe/stupidIE.txt benutzen.
Nun ich sage es jetzt mal so: Ich wünschte er hätte wenigstens ein
Problem, denn _dieses_ wüsste ich ja zu lösen :-(
Viele Grüsse
Philipp