HTML form action endet das herunterladen perl-Datei nicht ausgeführt werden, sondern es
Ich habe versucht, führen Sie ein einfaches perl-cgi-Skript auf windows 7. Dies ist ein einfaches HTML-Formular mit einer OK-Taste, wo Sie auf die OK-Taste zeigt einige text. Aber auf den OK-button auf der HTML-Seite, statt die Ausführung und Anzeige von perl-Datei wird ausgegeben, der browser startet den Download des Skripts. Ich habe Hinzugefügt-handler in httpd.conf
AddHandler cgi-script .pl
Aber das hilft nicht. Ich fügte hinzu, die option ExecCGI in der httpd.conf aber das hat auch nicht geholfen.
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Hier ist das perl-Skript verwendet:
#!C:\Perl\bin\perl
use CGI;
print "Content-type: text/plain","\n\n";
print "<html>","\n";
print "<head>\n\t<title>Server Information Ready</title>\n</head>","\n";
print "<body>","\n";
print "<h1>Server Information</h1>","\n";
print "</body></html>","\n";
Und hier ist die html-Datei:
<html>
<head><title>Server Information</title></head>
<body bgcolor="#EEAA55">
<h3>Please click OK to get the server information</h3>
<hr><pre>
<form action="http://localhost/cgi-bin/ctest/pranav1a.pl" method="post">
<input type="submit" value="OK">
</form>
</hr></pre>
</body>
</html>
Habe ich versucht diese in chrome, IE und Mozilla. Mozilla und chrome starten Sie den perl-Datei herunterladen, aber der IE zeigt nur einige seltsame Inhalte auf Klick auf die Schaltfläche OK. Wie kann ich das browser-display-Ausgang von file execution anstatt das Skript zu laden ?
PS: ich habe versucht die shebang-Zeile als"#!c:/Perl/bin/perl' das scheint nicht zu funktionieren. Ich bin in der Lage, um zu sehen, das perl-Skript den output bei der Ausführung von cmd-Eingabeaufforderung.
- hast du dies testen, auf einem live-server. localhost kann diese Ausgabe so konfigurieren Sie eine Menge von Optionen. Ich würde vorschlagen, Sie versuchen es auf einer Produktions-Umgebung
- In httpd.conf, stellen Sie sicher, diese Zeile ist auskommentiert:
LoadModule cgi_module modules/mod_cgi.so
Fügen Sie ein ScriptAlias:<IfModule alias_module>ScriptAlias /cgi-bin/ "C:/BitNami/apache2/cgi-bin/"</IfModule>
ScriptAliases sind im wesentlichen dasselbe wie Aliases, mit der Ausnahme, dass Dokumente im Zielverzeichnis werden behandelt, als Anwendungen, und führen Sie durch den server, wenn die angeforderten und nicht als Dokumente an den client gesendet. - Da Sie sich entschieden haben, zu verwenden .pl statt .cgi, müssen Sie diese in httpd.conf:
AddHandler cgi-script .pl
(wahrscheinlich gibt es bereits eine für den .cgi-Erweiterung; wenn nicht, fügen Sie es auch. Und möchten Sie vielleicht, um Ihre .pl /cgi-bin statt den sub-directory-ctest.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand die Lösung: in meinem Fall war ich mit 'localhost' im form-action anstelle von 'localhost:8080'.
Wie über die
+ExecCGI
option? Versuchen Sie, die+
vor.Darüber hinaus ist diese in der Regel ein problem mit dem Verständnis suexec2 (nicht sicher, ob suexec2 gilt für eine Windows-Plattform):
Lesen Sie die ganzen Seite dort. Solche Probleme sind nicht fixierbar, wenn Sie nicht verstehen, die grobe Einschränkungen, durchgesetzt von suexec. Häufige Fehler sind:
Haben Sie durchgearbeitet apache.org/docs/2.2/howto/cgi.html#troubleshoot noch?
Dank Scavokovich.
In meinem Fall die folgende Zeile wurde auskommentiert in der httpd.conf-Datei.
Einkommentieren, und Neustart
apache
erlaubt das CGI-Skript ausführen, statt öffnen als text-Datei.