html cgi
-
Shade Of Mine schrieb:
Die Form schickt dich ja auch die naechste Seite und das ist bei dir ClearList.cgi
Diese Datei willst du aber nicht anzeigen - also ersetze das Form action durch ein onsubmit event wo du wie in IncDec ClearList.cgi asynchron aufrusft.
Weiters musst du natuerlich auch den Apachen korrekt konfigurieren dass er das CGI auch korrekt versteht.
Nun kommt zumindest nicht mehr der Speichern unter Dialog, das Programm scheint aber nicht ausgeführt zu werden.
Options +ExecCGI
AddHandler cgi-script .cgiWo muss ich das ganze eintragen? der Apache läuft bei mir unter Linux auf einem
Raspberry pi.Ich habe gelesen das es da ein httpg.conf gibt, die Datei finde ich aber nicht.
Ich finde aber jedemenge apache2 Ordner, heist die Datei vieleicht anders?Eine andere Frage ist natuerlich: warum willst du C fuer sowas verwenden?
Da ich in C,C++ sowie C# zuhause bin, meinst Du man sollte da eher PHP nutzen.
-
hermes schrieb:
Ich habe gelesen das es da ein httpg.conf gibt, die Datei finde ich aber nicht.
Du meinst wohl httpd.conf? Die Datei sollte unter /etc/httpd/httpd.conf zu finden sein. Es ist übrigens üblich CGI-Programme in einem Unterverzeichnis namens cgi-bin zu speichern, siehe hier für mehr Informationen zur Konfiguration.
-
Hallo,
natürlich meine ich httpd.conf.
Suche ich von root aus find -name httpd.conf wird nichts gefunden.
Finde aber jede menge apache2 ordner unter anderem /etc/apache2/
dort finde ich apache2.conf, ports.conf sowie noch den ordner conf.d mit mehreren
dateien. Wie gesagt httpd.conf finde ich aber nicht.
-
Naja, dann mach dich bei deinem System mal schlau wie du den Apachen konfigurieren kannst.
uU ist die apache2.conf ja die passende Datei oder aber auch im conf.d Ordner - denn dort sollten eigentlich die sites configs liegen.
uU reicht ja auch eine .htaccess im Verzeichnis der cgi Datei.
Welches Linux verwendest du denn?
-
Shade Of Mine schrieb:
Welches Linux verwendest du denn?
uname -a
Linux raspberrypi 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l GNU/LinuxuU ist die apache2.conf ja die passende Datei oder aber auch im conf.d Ordner - denn dort sollten eigentlich die sites configs liegen.
apache2.conf sieht schon mal ganz gut aus.
.......
# Global configuration# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.# NOTE! If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation (available
# at URL:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#lockfile);
# you will save yourself a lot of trouble.# Do NOT add a slash at the end of the directory path.
#ServerRoot "/etc/apache2"
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
LockFile ${APACHE_LOCK_DIR}/accept.lock
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvarsPidFile ${APACHE_PID_FILE}
# Timeout: The number of seconds before receives and sends time out.
Timeout 300
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.KeepAlive On
........Muss ich da
Options +ExecCGI
AddHandler cgi-script .cgieinfach unten dran hängen?
uU reicht ja auch eine .htaccess im Verzeichnis der cgi Datei.
Meinst Du eine Datei mit dem Namen .htaccess?
-
Schau dir mal die Doku hier an:
http://httpd.apache.org/docs/2.2/mod/mod_cgi.html
-
Habe nun mal folgendes in apache2.conf angehängt.
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so Alias /cgi-bin/ /cgi-bin/ <Location /cgi-bin > SetHandler cgi-script Options ExecCGI </Location> AddHandler cgi-script .cgi
Im Linux root gibt es den Ordner cg-bin mit dem File Test.cgi. sowie allen rechten.
Der Browser meldet
The requested URL /cgi-bin/Test.cgi was not found on this server.Bei der google suche bin ich dann auf /usr/lib/cgi-bin gestoßen.
nach ändern von apache2.conf
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so Alias /cgi-bin/ /usr/lib/cgi-bin/ <Location /cgi-bin > SetHandler cgi-script Options ExecCGI </Location> AddHandler cgi-script .cgi
Wird mein c Programm dann schon mal ausgeführt.
... <form method="get" action="/cgi-bin/Test.cgi"> <div id="x"><b></b></div> <b></b> <input type="submit" name="btnTest" value="Test"> ...
Irgendwo muss da wohl in apache2.conf noch das Verzeichniss /cgi-bin hinzugefügt werden.
ps. Die apache Doku finde ich ziemlich katastrophal.Beendet wird das Programm mit
printf("HTTP/1.0 302 OK\n"); return 0;
Was beim Browser
The server encountered an internal error or misconfiguration and was unable to complete your request.
meldet.Was muss den da zurückgegeben werden.
-
hermes schrieb:
Beendet wird das Programm mit
printf("HTTP/1.0 302 OK\n"); return 0;
Was beim Browser
The server encountered an internal error or misconfiguration and was unable to complete your request.
meldet.Was muss den da zurückgegeben werden.
Du mußt dem Browser ja auch eine neue URL mitgeben. Woher soll er die denn sonst kennen?
Also z.B.:
printf("HTTP/1.0 302 OK\n"); printf("Location: /MyApp/index.html\n"); return 0;
mfg Martin
-
mgaeckler schrieb:
Also z.B.:
printf("HTTP/1.0 302 OK\n"); printf("Location: /MyApp/index.html\n"); return 0;
Der
Location
-Header muss absolut angegeben werden
-
zwutz schrieb:
mgaeckler schrieb:
Also z.B.:
printf("HTTP/1.0 302 OK\n"); printf("Location: /MyApp/index.html\n"); return 0;
Der
Location
-Header muss absolut angegeben werdenStimmt, aber das kann der Server aber erst liefern, wenn er das host-feld bekommt oder im get eine absolute URL bekommen hat. Das host-feld gibt es aber erst seit http/1.1 und meines Wissens können alle Browser auch mit relativen Locationangaben umgehen.
mfg Martin