Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Probleme mit Dateioperationen unter CGI

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
M-ichael



Anmeldungsdatum: 24.12.2005
Beiträge: 4

BeitragVerfasst am: 27.12.2005, 00:01    Titel: Probleme mit Dateioperationen unter CGI Antworten mit Zitat

Hallo Forum,

ich hab ein sehr....nervendes Problem.
Und zwar hab ich mir gerade ein kleines Testprogramm für meine mcgi-Utils gebaut, was in Form einer kleinen Shoutbox realisiert ist. Jetzt habe ich aber das Problem, dass unter CGI-Bedingungen keine einzige Dateioperation funktioniert.
Um sicherzugehen, hab ich mir eine kleine Routine eingebaut, die eine Ascii-Datei zeilenweise lädt und anzeigen sol, jedoch passiert überhaupt nichts.

Das komische aber ist, dass, wenn ich es unter normaler Konsole (xterm, was auch immer) starte, ich direkt die Datei angezeigt bekomme, ohne irgendwelcher Probleme.
Beim schreiben in Dateien habe ich auch schon die richtigen Dateirechte gesetzt, also kann es kein Rechtevergabe-Problem sein.

Jetzt würde mich halt interessieren, auf welcher Seite das Problem liegt. Ist es FBC, der unter CGI-Bedingungen warum acuh immer anders funktioniert und dabei probleme mit den Dateikanälen wg. stdin, stdout, stderr bekommt?
(Im übrigen hab ich auch versucht den lister über diese zwei auszugeben, brachte aber nix)

Ich bin langsam echt am verzweifeln, da ein Programm unter CGI-Bedingungen ohne Dateioperationen (nicht mal simples auslesen der Datei) so gut wie NICHTS bringt.

Hier mal der simple Code:
Code:

'Eine kleine Shoutbox um die Funktionalität von mcgi zu testen


'$INCLUDE: "mcgi.bi"
const Version = "0.0.1"
const titel = "Shoutbox " + str$(Version)


'message udt
type tBox
   aut as string * 15
   msg as string * 255
end type

dim result as ubyte
dim shared Box as tBox
const dq = chr$(34)
dim aut as string
dim msg as string
dim index as uinteger
dim ff as ubyte
result = mcgi_init()

select case result
   case is = ERR_NONE
      mcgi_sendContentType("text","plain")
      print "Es kam was!"
      if mcgi_isset("autor") = mcgi_true then
         if mcgi_isset("message") = mcgi_true then
            box.aut = mcgi_getStr("autor")
            box.msg = mcgi_getStr("message")
            print "Name: " ; trim$(box.aut); "<br>"
            print "Msg : "; trim$(box.msg); "<br>"
            
            ff = freefile
            open "shoutbox.dat" for append as #ff 'len=len(box)
              print #ff, box.aut, box.msg
            close #ff
            
            'Hier die das Auslesen der Datei zum test!
            dim zeile$
            print "<strong>Filelistertest </strong> v1.3"
            open "shoutbox.bas" for input as #5
            do
               line input #5, zeile$
               print zeile$
            loop until eof(5)
            close #5

            
         else
            print "<font color=red>Keine Nachricht</font><br>"
         end if
      else
         print "<font color=red>Keinen Namen</font><br>"
      end if
   case is = ERR_GET_NO_QS
      mcgi_sendContentType("text","html")
      
      'open "shoutbox.dat" for random as #1 len=len(Box)
      'do
      'index = index +1
      
      'get #1,,Box
      'print "Name: "; trim$(box.aut) ; "<br>"
      'print "Msg: "; trim$(box.msg); "<br>"
      'print index
      'loop until eof(1)
      'close #1
      box.aut = ""
      box.msg = ""
      
      'Wir haben keine Daten bekommen, also schreiben wir das normale eingabe-
      'formular
      print "<form action=" + dq + "/cgi-bin/shoutbox" + dq +" method=" + dq + "GET" + dq +" name=" +dq +"shout" +dq +">"
      print "Name: <input type=" + dq + "text" + dq +" name=" + dq + "autor" + dq + " maxlength=" + dq + "15>" +dq+"</input>"
      print "Message: <input type="+ dq +"text" + dq +" name="+ dq +"message"+dq+" maxlength="+dq+"255" + dq +"></input>"
      print "<input type="+ dq +"submit"+ dq +"></form>"
   
      case else
         print mcgi_error(result)
end select
      


'$INCLUDE: "mcgi.bas"

Helft mir....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
M-ichael



Anmeldungsdatum: 24.12.2005
Beiträge: 4

BeitragVerfasst am: 27.12.2005, 21:12    Titel: Nachtrag Antworten mit Zitat

Das Auslesen einer ASCII-Datei scheint nun zu funktionieren.

Das liegt wohl wahrscheinlich an folgendem:
FB nutzt zur kompilierung unter Linux die termcap, die es aber auf meinem Debian nur noch als termcap-compat teilweise unterstützend gibt.
In Debian sollte man deshalb nicht mehr die termcap sondern die terminfo benutzen, und die /lib/libtermcap.a gegen die nlibncurses linken (ln -s /lib/libncurses.so /lib/libtermcap.a) , da ncurses den grösseren Teil der termcap emuliert.
Diese benutzt noch die libc5, weswegen ich auch zum Teil Warnungen beim kompilieren bekomme:

Code:

michael@miathan:~/www/cgi-bin$ fbc shoutbox.bas
/usr/local/freebasic/bin/linux/ld: warning: libc.so.5, needed by /lib/libtermcap.a, may conflict with libc.so.6
/usr/local/freebasic/bin/linux/ld: warning: libc.so.5, needed by /lib/libtermcap.a, may conflict with libc.so.6
/lib/libc.so.5: warning: the `gets' function is dangerous and should not be used.
/lib/libc.so.5: warning: the `getpw' function is dangerous and should not be used.
/lib/libc.so.5: warning: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
/lib/libc.so.5: warning: the use of `mktemp' is dangerous, better use `mkstemp'
/lib/libc.so.5: warning: warning: `siggetmask' is obsolete; `sigprocmask' is best
/lib/libc.so.5: warning: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead
/lib/libc.so.5: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/lib/libc.so.5: warning: the `llseek' function may be dangerous; use `lseek64' instead.
/lib/libc.so.5: warning: the use of `tempnam' is dangerous, better use `mkstemp'
/lib/libc.so.5: warning: the `getwd' function is dangerous and should not be used.
michael@miathan:~/www/cgi-bin$

Natürlich kann ich auch jetzt schlecht die libc6 rauswerfen, denn dann würde ich mind. 3/4 des Systems rausfeuern und es wäre nicht nutzbar, da die meisten Programme gegen die libc6 gelinkt sind!

Warum das so ist kann ich mir auch nicht erklären, aber zumindest geht das auslesen und ausgeben einer Datei. Nur schreiben habe ich noch Probleme, denn dort verhält es sich genauso wie vorher.

Zumindest bin ich schonmal einen Schritt weiter...

regards
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
M-ichael



Anmeldungsdatum: 24.12.2005
Beiträge: 4

BeitragVerfasst am: 27.12.2005, 21:55    Titel: GELÖST! Antworten mit Zitat

Ich könnt mich orhfeigen, so einfach ist die Lösung.

Ich habe von der quellcode datei, die gelistet werden sollte eine im DocRoot des Webservers und eine im cgi-bin Verzeichnis gehabt, daher lief es auch ohne Probleme.
Das schreiben funktioniert auch. Denn es wird nicht ins cgi-bin Verzeichnis geschrieben, sonden app.path ist das DOCROOT des Servers und nicht wie man vorher annimmt das cgi-bin Verzeichnis in der die Anwendung liegt!

Nur komischerweise hat mir FB dennoch in www keine Datei angelegt (und erst recht bekam ich keine Fehlermeldung deswegen), sondern erst nach einem # touch shoutbox.dat und einem chmod 666 hat er ohne zu murren reingeschrieben.

Problem gelöst !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz