Avatar billede half_d Nybegynder
24. april 2001 - 01:43 Der er 20 kommentarer og
1 løsning

CGI program i C++ (output HTML)

Hejsa dér!

Jeg vil gerne lave et stk. CGI program i C++.
Det har også lykkedes mig at lave noget og compile und so..
men når jeg kører programmet fra min browser, spytter den bare koden ud (altså maskinkoden)

Nogen der har nogle idéer?
Jeg kører på en FreeBSD, compiler med g++/c++
Avatar billede erikjacobsen Ekspert
24. april 2001 - 07:42 #1
Et gæt er vel at du ikke har givet tilladelse til at afvikle oversatte
programmer i din server, eller at du ikke har har sat x-bitten med chmod
for afvikling (chmod 755) ?
Avatar billede half_d Nybegynder
24. april 2001 - 16:48 #2
Jo jo,
det skulle jeg lige også have nævnt.
Filen er chmod\'et til 777 faktisk, og jeg kan også få den til at spytte html ud hvis jeg kører den fra prompten.
Men ikke hvis jeg kører den fra browseren.

Se selv :
bash-2.03$ ./a.out
Content-type: text/html

<HTML><HEAD>
<TITLE>cgic test</TITLE></HEAD>
<BODY><H1>cgic test</H1>
Name fetched, result code: cgiFormNotFound<br>
Name: <BR>
Address: <PRE>
</PRE>
I\'m Not Hungry!<BR>
My temperature is 98.600000.<BR>
I have eaten 0 frogs.<BR>
I am: Red<BR>
I hate ice cream.<p>
Votes (method 1):<BR>
I hate them all!<p>
Votes (method 2):<BR>
I hate them all!<p>
Age of Truck: 1 (method #1)<BR>
Age of Truck:  (method #2)<BR>
</BODY></HTML>
bash-2.03$

og i browseren får jeg den her :
ELFêýÿÿƒÄèNèÐ…äxMôÐ}ìÐEüSUôˆ ÿEìÇEø‰1Àë*vvé**ùÿgiFormTruncated<br>
                                  Virtual memory exceeded in `new\'
*tring__FPcT0i

og det er jo ikke så pænt, vel?
Avatar billede erikjacobsen Ekspert
24. april 2001 - 18:00 #3
Kører du den via serveren ? (Også et dumt spørgsmål - he he)
Avatar billede half_d Nybegynder
24. april 2001 - 18:33 #4
øh - hva?

Jeg er lidt ny på det her område ..
C programmering kan jeg, og også en del unix stads.

Jeg er bare ved at være træt af php cgi stads, og ville gerne lave noget i C++.

Hvordan kan jeg få den her fil til at sende HTML fra browseren..

Det er tydeligt at serveren ikke ved hvad den skal stille op når den får en http request på den a.out fil.
Der sker jo det samme som hvis man ikke har sat sin server til at genkende f.eks. PERL filer og den bare sender koden som ren tekst til browseren, istedet for at parse filen først gennem PERL.

Forslag?
Avatar billede erikjacobsen Ekspert
24. april 2001 - 18:56 #5
Jeg mener bare: står der http://......etellerandet    i browserens adresselinie?
Avatar billede half_d Nybegynder
25. april 2001 - 13:47 #6
Ja, jeg har prøvet at køre den sådan :
http://www.topdog.dk/temp/ctests/a.out

også som modtager af en form, via POST.
Så sagde serveren \"Brok brok, not allowed to POST blabla brok brok\"
over at jeg ikke kunne bruge POST på den fil eller noget.

Så ændrede jeg det til GET istedet i formen.
og så fik jeg jo den her
a.out?bla=blabla&navn=hare

Men det gav det samme resultat som hvis man bare \'kører\' filen.

Er der noget specielt navn C filer skal ha\' for at blive genkendt af serveren?
Hvorfor vil serveren ikke execute filer når de bliver kaldt over http?

Avatar billede erikjacobsen Ekspert
25. april 2001 - 13:50 #7
Kommer lige i tanker om en server, der ikke tillader udførsel af scripts hvis
de er skrivbare af andre. En ganske umådeligt fornuftig sikkerhedsforanstaltning.
Prøv at lave den 755 som jeg oprindelig foreslog.
Avatar billede half_d Nybegynder
25. april 2001 - 13:51 #8
Jeg mener at jeg også har prøvet det, men jeg gør det lige :)
Avatar billede half_d Nybegynder
25. april 2001 - 13:54 #9
Det bliver det sgu ikke bedre af, men det har da ændret på noget ..?!??
Nu er outputtet fra a.out (når man kører den gennem browseren)

ELF¡`ÉPèDøÿÿƒÄÐEàPèèPRÐEø‰Â*•‰Ã÷ç‰Uà‰ÃÐMä9Êwu9óvÐEà)ûE܉EàÐUä)ÞUà‰UäÐMèÓâÐMìÓî‰uà        ò‰UðÐEäÓè‰EôÐUð‰UøÐUô‰UüÐEøÐUü*eÐ[^_ÉÃU‰åƒìWVSÐ]ÐuÐUÐM‰Uì‰Ï‰]ü‰ó…ÿuE9ÚvÐEü‰Ú÷uì‰Çé´|Ê|:iltin_vec_delete


Det er da noget andet end den sagde før .... weird?!?
Avatar billede erikjacobsen Ekspert
25. april 2001 - 13:56 #10
Har du ikke haft den genoversat?? Nå, men så er det vel serveren,
der skal bringes til at forstå, at den godt må udføre de programmer.
Apache?
Avatar billede half_d Nybegynder
25. april 2001 - 13:58 #11
Yep Apache.
Det er også det jeg er kommet frem til i min konklusion.
Den ved jo ikke hvad den skal stille op med de filer.
Avatar billede erikjacobsen Ekspert
25. april 2001 - 14:00 #12
Jeg kan desværre ikke selv afprøve noget på en Apache på en \"Unix\",
så jeg foreslår at du lukker dette spørgsmål, og spørger igen
under f.eks. WebServere. Mon ikke der er en enkelt :)
Avatar billede half_d Nybegynder
25. april 2001 - 14:00 #13
Nu hvor jeg har sat formen til \'POST\' igen, får jeg den her :

Method Not Allowed

The requested method POST is not allowed for the URL /temp/ctests/action.
Avatar billede half_d Nybegynder
25. april 2001 - 14:01 #14
Det kan jeg vel godt gøre.
Avatar billede half_d Nybegynder
25. april 2001 - 14:01 #15
Det kan jeg vel godt gøre.
Avatar billede erikjacobsen Ekspert
25. april 2001 - 14:01 #16
Nej, en POST kan kun laves på noget exekverbart, f.eks. helller ikke
på .html filer. Når den bliver exekverbar, går det i orden igen.
Avatar billede half_d Nybegynder
25. april 2001 - 14:02 #17
Jeg har aldrig set dobbeltposts her før :)
Det var da rart at få sådan en!
Avatar billede erikjacobsen Ekspert
25. april 2001 - 14:03 #18
dobbelt - haha - du er heldig - der har af og til været mange.....:)
Avatar billede half_d Nybegynder
25. april 2001 - 14:03 #19
Vil du ha\' nogle point?
Avatar billede half_d Nybegynder
25. april 2001 - 14:16 #20
Nu har jeg lukket den.
Jeg har stillet et bedre spørgsmål her :
http://www.eksperten.dk/spm/67544
Avatar billede erikjacobsen Ekspert
25. april 2001 - 14:23 #21
Vi fik jo ikke løst problemet, så behold du dem bare
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester