Möjliga anledningar till att ditt CGI-skript krashar

  • Författare
  • Meddelande
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10988
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Möjliga anledningar till att ditt CGI-skript krashar

Inlägg22 aug 2014, 00:47

Du får följande när du kör ditt cgi-skript:
Internal Server Error

Möjliga felkällor:

0) Exekvera CGI-skriptet som ett vanligt Python-program för att se om det blir några fel.
Kod: Markera allt
$ python3 hello.cgi



1) Du klickade (i webbläsaren) på en .py-fil. Endast .cgi-filer kan vara cgi-skript. (Iallafall när du går kursen python, vi använder inte .py-filer som cgi-skript, även om det kan gå).


2) Du har inte använt unix radbrytning. Dubbelkolla med kommandot file eller din texteditor.
Kod: Markera allt
$ file *
hello.cgi: Python script, ASCII text executable, with CRLF line terminators
hello.py:  Python script, ASCII text executable
README.md: empty

CRLF är Windows style radbrytning, byt till Unix radbrytningar (de skrivs inte ut i file kommandot).


3) Du har fel rättigheter på filen. De skall vara 755. Skriptet bin/dbwebb publish sköter om det automatiskt och sätter 755 på alla filer som slutar med ändelsen 755.


4) Du kör fel version av python, du försöker köra en version som inte finns. Är det version 2 eller 3 du försöker köra?
Kod: Markera allt
#!/usr/bin/env python
#!/usr/bin/env python3


5) Du har sparat filen i fel format, kanske UTF-8 med BOM. Dubbelkolla i din editor eller med kommandot file.
Kod: Markera allt
$ file *
hello.cgi: Python script, UTF-8 Unicode (with BOM) text executable

Ändra till UTF-8, bort med BOM. Det kan se ut så här när det är okey, antingen ASCII eller UTF-8.
Kod: Markera allt
me/mos-me.cgi: Python script, UTF-8 Unicode text executable
example/cgi/execute-another-file.cgi: Python script, ASCII text executable


6) Provkör programmet och se om det går igenom utan felmeddelanden och rätt output visas. Du kan alltid debugga ditt cgi-skript innan du publicerar det, genom att köra det som ett vanligt python-skript.
Kod: Markera allt
$ python3 me.cgi


7) Sätt rättigheterna 755 på ditt cgi-skript och kör det som ett vanligt program. Du bör få ut exakt samma resultat som i 6). Blir det fel kan du ha problem med din shebang, den allra första raden i skriptet som säger att skriptet skall köras som ett python-skript. Dubbelkolla din shebang.
Kod: Markera allt
$ chmod 755 me.cgi
$ ./me.cgi
...
..:
.... /mos
Användarvisningsbild

jone14

javascriptare

  • Inlägg: 37
  • Blev medlem: 30 aug 2014, 09:11
  • Ort: Karlskrona / Nässjö

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg31 aug 2014, 08:31

Hej, jag har problem med exempelscripten serve-as-text.cgi och serve-as-html.cgi.

De fungerar om jag ändrar till python istället för python3 i shebang, så först trodde jag att det var problem med min installation av python3 (jag kör mac) men vid lite mer tester så visade det sig att hello-web.cgi fungerar med python3.

Den ända skillnaden jag kan hitta mellan scripten är att serve-as-*.cgi scripten använder print(""" och avslutar med """) medan hello-web.cgi använder print("texten här"). Debugern pekar också på sista raden, alltså """)

Detta är vad jag får i webläsaren:
Traceback (most recent call last):
File "/home/saxon/students/20142/jone14/www/dbwebb-kurser/python/example/cgi/serve-as-html.cgi", line 64, in <module>
""")
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 197: ordinal not in range(128)


Tack på förhand
//Johan

sharpless

regexp-master

  • Inlägg: 130
  • Blev medlem: 10 nov 2011, 14:35

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg31 aug 2014, 10:24

Ditt problem är att du har (minst) ett ä som är kodat i ISO-8859-1 istället för UTF-8.
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10988
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg31 aug 2014, 10:57

Yep. ser felet. Uppkom när vi bytte webbservern från python2 till python3. Ska fixa. Det gäller flera av cgi-skripten.
Hantering av default encoding är inte samma i python2 och python3.
...
..:
.... /mos
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10988
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg31 aug 2014, 16:51

Kursrepot är uppdaterat och CGI-filerna likaså.
viewtopic.php?f=41&t=2545#p20545

För att göra en lång historia kortare så finns utökade svar och bakgrunden här:

https://stackoverflow.com/questions/932 ... 1#19574801
http://stackoverflow.com/questions/4374 ... n-python-3
http://legacy.python.org/dev/peps/pep-3333/

Skripten gick bra med python2 samt python3 & ASCII, det var när python3 & UTF-8 kom in i leken som det gick sämre. Det har helt enkelt med hur default character encoding fungerar (olika) i terminal och i webbsammanhang samt hur man bör skriva tecknen i CGI-sammanhang.
...
..:
.... /mos

Mattias82

html-kodare

  • Inlägg: 16
  • Blev medlem: 28 aug 2014, 08:32

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg02 sep 2014, 15:33

Jag får Internal Server Error på hello-web.cgi men mitt me.cgi fungerar utan problem. Jag testade att kopiera mitt me.cgi och lägga i hello mappen och då fungerar inte det längre även om koden är exakt densamma.
Användarvisningsbild

Sylvanas

dbwebb

  • Inlägg: 1133
  • Blev medlem: 16 nov 2011, 17:03
  • Ort: Karlskrona

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg02 sep 2014, 15:50

Mattias82 skrev:Jag får Internal Server Error på hello-web.cgi men mitt me.cgi fungerar utan problem. Jag testade att kopiera mitt me.cgi och lägga i hello mappen och då fungerar inte det längre även om koden är exakt densamma.


En trolig anledning är att du har windows linebreak och inte unix. Även om innehållet då ser samma ut så är radbrytningarna olika.
Brain - "Are you pondering what I'm pondering?"
Pinky - "I think so, Brain, but there's still a bug stuck in here from last time."

Mattias82

html-kodare

  • Inlägg: 16
  • Blev medlem: 28 aug 2014, 08:32

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg02 sep 2014, 15:58

Kanske en dum fråga, men hur ändrar man det? Jag sitter med PyCharm som utvecklingsmiljö ifall det hjälper/stjälper.
Användarvisningsbild

Sylvanas

dbwebb

  • Inlägg: 1133
  • Blev medlem: 16 nov 2011, 17:03
  • Ort: Karlskrona

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg02 sep 2014, 16:03

Det beror helt på vilken editor du kör. PyCharm kan jag inte svara på vart det ligger. Google kan hjälpa dig med det tror jag. Det här hittade jag: http://www.jetbrains.com/pycharm/webhel ... ators.html
Brain - "Are you pondering what I'm pondering?"
Pinky - "I think so, Brain, but there's still a bug stuck in here from last time."
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10988
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg02 sep 2014, 16:07

Mattias82 skrev:Kanske en dum fråga, men hur ändrar man det? Jag sitter med PyCharm som utvecklingsmiljö ifall det hjälper/stjälper.


http://dbwebb.se/kunskap/installera-en- ... t#linefeed

Annars länka till cgi-skriptet så kan vi titta på det.
...
..:
.... /mos

Mattias82

html-kodare

  • Inlägg: 16
  • Blev medlem: 28 aug 2014, 08:32

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg02 sep 2014, 16:08

Tack. Har inte funderat över det innan så kände mig helt vilsen :oops:
Användarvisningsbild

Sylvanas

dbwebb

  • Inlägg: 1133
  • Blev medlem: 16 nov 2011, 17:03
  • Ort: Karlskrona

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg02 sep 2014, 16:13

Jag har gjort exakt samma fel. :)
Brain - "Are you pondering what I'm pondering?"
Pinky - "I think so, Brain, but there's still a bug stuck in here from last time."

Mattias82

html-kodare

  • Inlägg: 16
  • Blev medlem: 28 aug 2014, 08:32

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg02 sep 2014, 16:30

Fungerade efter jag hade ändrat inställningen i PyCharm. Var dock "tvungen" att ta bort och skapa en ny fil för att få det att fungera.

Tusen tack för hjälpen.

Mattias82

html-kodare

  • Inlägg: 16
  • Blev medlem: 28 aug 2014, 08:32

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg03 sep 2014, 16:16

Verkar ha något annat problem med plane1.cgi

http://www.student.bth.se/~makq14/dbweb ... plane1.cgi

$ file *
plane.py: Python script, UTF-8 Unicode text executable
plane1.cgi: Python script, UTF-8 Unicode text executable
plane1.py: Python script, UTF-8 Unicode text executable


Jag har även testat att konvertera den till ASCII men problemet var detsamma.

När jag kör publish lyser allt grönt.
Användarvisningsbild

Sylvanas

dbwebb

  • Inlägg: 1133
  • Blev medlem: 16 nov 2011, 17:03
  • Ort: Karlskrona

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg03 sep 2014, 16:43

mos skrev:4) Du kör fel version av python, du försöker köra en version som inte finns. Är det version 2 eller 3 du försöker köra?
Kod: Markera allt
#!/usr/bin/env python
#!/usr/bin/env python3



Är det pga av detta kanske? Testa att köra med python och inte python3. Tror att cgi-scriptet gnäller om du försöker köra dem med py3 på BTH's miljö.
Brain - "Are you pondering what I'm pondering?"
Pinky - "I think so, Brain, but there's still a bug stuck in here from last time."
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10988
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg03 sep 2014, 16:45

Provkör programmet vid terminalen och se om du får något felmeddelande.

Kod: Markera allt
$ python3 plane1.cgi
...
..:
.... /mos

Mattias82

html-kodare

  • Inlägg: 16
  • Blev medlem: 28 aug 2014, 08:32

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg03 sep 2014, 16:59

Återigen tack för snabba svar. Testade både python och python3.

Felet var indenteringen i CGI scriptet. Lite synd att inte linten varnar för indenteringsfel, men jag borde kollat upp det bättre själv också.

Nu fungerar det i alla fall :)

Dags för lab1 som verkar riktigt rolig!
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10988
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg08 sep 2014, 10:25

* Flyttade inlägg om IE encoding till egen tråd: *
viewtopic.php?f=44&t=2641
...
..:
.... /mos
Användarvisningsbild

stjo15

javascript-guru

  • Inlägg: 89
  • Blev medlem: 19 jan 2015, 08:37
  • Ort: Göteborg

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg21 jan 2015, 22:45

Hej! Kopierade cgi-skriptet till jEdit, men vid valideringen står det

"C: 28, 0: Final newline missing (missing-final-newline)"

Vad är det då för fel? Newline är väl radbryt \n om jag inte är ute och cyklar? Var ska det ligga i skriptet?

Mvh Staffan
Ha det gött! / Staffan
Användarvisningsbild

Ädelhjort

webbsurfare

  • Inlägg: 8
  • Blev medlem: 09 jan 2015, 22:43

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg22 jan 2015, 08:16

Jag undrar om jag kan stoppa in en python kod i mitt CGI-script som ser ut så:

Kod: Markera allt
# Write a program that uses input to prompt a user for their favorite
animal
input("Enter your favorite animal here, and it\'ll print below:\n")

# Prints out feedback to the user
print("-so that\'s your favorite animal!\n My favorite animal is the
cow")


jag får nämligen ett "INTERNAL SERVER ERROR" meddelande när jag försöker göra ett cgi script av min befintliga python fil hello.py

Kan någon vara snäll och hjälpa mig?
Användarvisningsbild

Sylvanas

dbwebb

  • Inlägg: 1133
  • Blev medlem: 16 nov 2011, 17:03
  • Ort: Karlskrona

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg22 jan 2015, 08:30

Ädelhjort skrev:Jag undrar om jag kan stoppa in en python kod i mitt CGI-script som ser ut så:

Kod: Markera allt
# Write a program that uses input to prompt a user for their favorite
animal
input("Enter your favorite animal here, and it\'ll print below:\n")

# Prints out feedback to the user
print("-so that\'s your favorite animal!\n My favorite animal is the
cow")


jag får nämligen ett "INTERNAL SERVER ERROR" meddelande när jag försöker göra ett cgi script av min befintliga python fil hello.py

Kan någon vara snäll och hjälpa mig?


Du kan inte ta emot input från en webbläsaren på det sättet. Så börja med att kommentera bort den raden.
Det andra är att du inte ska skriva ut det du vill visa med print() utan du följer de cgi-exempel som redan finns i repot, där ett av dem är hello-web.cgi. Där kommer du se att man lägger det man vill visa i en variabel istället för att sedan i slutet presenteras på sidan. Så använd hello-web.cgi som mall för din hello.cgi.
Notera att du ska när du gör en cgi-fil skapa en ny fil som heter just hello.cgi så att du inte försöker göra en cgi-fil utan hello.py och försöker öppna den i webbläsaren. Det är bara cgi-filer man kan göra så med.
Brain - "Are you pondering what I'm pondering?"
Pinky - "I think so, Brain, but there's still a bug stuck in here from last time."

Emma_Wahlberg

javascriptare

  • Inlägg: 31
  • Blev medlem: 18 jan 2015, 19:17
  • Ort: Stockholm

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg22 jan 2015, 09:32

stjo15 skrev:Hej! Kopierade cgi-skriptet till jEdit, men vid valideringen står det

"C: 28, 0: Final newline missing (missing-final-newline)"

Vad är det då för fel? Newline är väl radbryt \n om jag inte är ute och cyklar? Var ska det ligga i skriptet?

Mvh Staffan


Jag fightades rätt mycket med det här igår, löste det genom att lägga till en ny rad. Men ville veta vad som egentligen händer. Enligt Pylint-dokumentationen betyder det:

Message
Final newline missing
Description
Used when a Python source file has no line end character(s) on its last line.
This message belongs to the format checker.
Explanation
While Python interpreters typically do not require line end character(s) on the last line, other programs processing Python source files may do, and it is simply good practice to have it. This is confirmed in Python docs: Line Structure which states that a physical line is ended by the respective line end character(s) of the platform.


Lite mer grafiskt inträffar felet när det ser ut såhär:
Bild

Det ska se ut såhär:
Bild

Med andra ord behöver du alltid ett radbryt efter en sats i Python. För att visa dina radbryt i Notepad++ väljer du View -> Show Symbol -> Show End of line. "CR LF" är Windows-radbrytningar, "LF" är Unix.

Jag tror att det här problemet är knutet till hur vissa textredigerare fungerar, Notepad++ verkar särskilt drabbat. Jag undviker detta genom att alltid trycka in en extra rad efter sista satsen.
Användarvisningsbild

stjo15

javascript-guru

  • Inlägg: 89
  • Blev medlem: 19 jan 2015, 08:37
  • Ort: Göteborg

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg22 jan 2015, 15:24

Med andra ord behöver du alltid ett radbryt efter en sats i Python. För att visa dina radbryt i Notepad++ väljer du View -> Show Symbol -> Show End of line. "CR LF" är Windows-radbrytningar, "LF" är Unix.

Jag tror att det här problemet är knutet till hur vissa textredigerare fungerar, Notepad++ verkar särskilt drabbat. Jag undviker detta genom att alltid trycka in en extra rad efter sista satsen.


Tack för svaret! Själv använder jag jEdit, hittade inga såna inställningar. Vad står "LF" för och hur gör man en sån? Är det bara att man trycker Enter i slutet? Det är inte samma som "\n" va? Problemet verkar löst iallafall. Vet inte hur jag gjorde det men meddelandet försvann.

Jag antar att mina frågor är lite noobiga, lite nytt för mig det här.. :lol:
Ha det gött! / Staffan

Emma_Wahlberg

javascriptare

  • Inlägg: 31
  • Blev medlem: 18 jan 2015, 19:17
  • Ort: Stockholm

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg22 jan 2015, 16:26

stjo15 skrev:
Med andra ord behöver du alltid ett radbryt efter en sats i Python. För att visa dina radbryt i Notepad++ väljer du View -> Show Symbol -> Show End of line. "CR LF" är Windows-radbrytningar, "LF" är Unix.

Jag tror att det här problemet är knutet till hur vissa textredigerare fungerar, Notepad++ verkar särskilt drabbat. Jag undviker detta genom att alltid trycka in en extra rad efter sista satsen.


Tack för svaret! Själv använder jag jEdit, hittade inga såna inställningar. Vad står "LF" för och hur gör man en sån? Är det bara att man trycker Enter i slutet? Det är inte samma som "\n" va? Problemet verkar löst iallafall. Vet inte hur jag gjorde det men meddelandet försvann.

Jag antar att mina frågor är lite noobiga, lite nytt för mig det här.. :lol:


LF står för line feed och är Unix sätt att göra radbrytning. Du kan läsa mer om de olika varianterna som finns här: http://en.wikipedia.org/wiki/Newline.

Har du ställt in Unix i texteditorn så ska den göra sådana automatiskt. \n är ANSI-koden för LF, för CR LF är det \r\n, de syns normalt inte när du arbetar i texteditorn. Jag antar att vissa editorer lägger till en radbryt automatiskt, medan andra kräver att man gör ett manuellt, efter sista raden varav vissa har problem med det medan andra inte har det. Har också upptäckt att problemet kan uppstå när man klipp- och klistrar mellan olika miljöer, då kan såna tecken ramla bort.
Användarvisningsbild

Sylvanas

dbwebb

  • Inlägg: 1133
  • Blev medlem: 16 nov 2011, 17:03
  • Ort: Karlskrona

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg22 jan 2015, 16:29

LF står för Line Feed. CRLF står för Carriage Return Line Feed, och båda är samma sak: en ny rad, en newline.

Det är samma sak som att trycka på enter i editorn, så det är inget speciellt tecken du lägger till.

Det du ska vara medveten om dock är att t.ex Unix-system och Windows-system hanterar newlines på olika sätt, därav att det dels finns endast LF och dels finns CRLF. En ny rad i Windows tolkas som CRLF, medan i Unix så tolkas det som LF. Det spelar alltså roll vilken typ av newline du ställer in i din editor beroende på vilket system filen ska visas och användas på, men du trycker oavsett enter i båda fallen.

Eftersom BTH kör Unix så ska du ställa in så att dina newlines är LF, vilket även brukar stå som Unix newlines.
Brain - "Are you pondering what I'm pondering?"
Pinky - "I think so, Brain, but there's still a bug stuck in here from last time."

caes15

html-kodare

  • Inlägg: 19
  • Blev medlem: 30 aug 2015, 18:14

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg13 sep 2015, 02:32

Hej, jag har ändrat litet och publiserat exempel sidor for kmom01.
Filen execute-another-file.cgi går att köra på servern i consolen men verkar inte fungerar i browser (testat med Chrome och IE11).
caes15@sweet: python3 execute-another-file.cgi
Content-Type: text/plain;charset=utf-8

___FILE___
execute-another-file.py
___FULL PATH___
/home/saxon/students/20152/caes15/dbwebb-kurser/python/me/kmom01/hello/example/execute-another-file.py

Executing code from the PYTHON file and printing some nice message here :) .


Medan på webbsidan får jag fel meddelandet från *.cgi filen att *.py filen inte hittats...
Kod: Markera allt
The file /home/saxon/students/20152/caes15/www/dbwebb-kurser/python/me/kmom01/hello/example/execute-another-file.py is not available, check if its there and set chmod to 644.


Filerna är exekverbara (chmod 755):
caes15@sweet: ls -l
total 8
-rwxr-xr-x 1 caes15 20152 1191 Sep 13 02:10 execute-another-file.cgi*
-rwxr-xr-x 1 caes15 20152 349 Sep 13 02:13 execute-another-file.py*


Är det någon som fått den execute-another-file.cgi att fungera på browsern?
http://www.student.bth.se/~caes15/dbwebb-kurser/python/me/kmom01/hello/example/
Jag har inte testat ännu med en "egen" .cgi fil, men antagligen kommer att gå fel också. :?
Tacksam för hjälpen.

caes15

html-kodare

  • Inlägg: 19
  • Blev medlem: 30 aug 2015, 18:14

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg13 sep 2015, 15:16

Hej, som en fortsättning på mitt tidigare inlägg (se ovan) i samma ämne lämnar jag här länken till src code:
https://gist.github.com/caes15/cf3c06ffd78f5f2dce9e.js

Output i browser ser ni här:
http://www.student.bth.se/~caes15/dbwebb-kurser/python/me/kmom01/hello/hello.cgi

Det verkar som denna del av koden inte går att exekvera på server side:
Kod: Markera allt
exec(open(fullpath).read())

men det fungerar under python3
Kod: Markera allt
caes15@sweet: python3 hello.cgi
Content-Type: text/html; charset=utf-8

<p>_FileName : hello.py
<p>_Full path to the file : /home/saxon/students/20152/caes15/dbwebb-kurser/python/me/kmom01/hello/hello.py

<p>___PY FILE : hello.py
<p>___FULL PATH : /home/saxon/students/20152/caes15/dbwebb-kurser/python/me/kmom01/hello/hello.py

<p>------------------------------------</p>
<h2> Now executing the file hello.py </h2>
<p>------------------------------------</p>

Hello World calling from a function.

Just saying Hello World!
------------------------

Hello World in a variable.

<html>
        <body>
                <hr>
                <h1>Hello to this World folks :-)!</h1>
                <hr> <code>... written by caes15</code>
        </body>
</html>

Rättigheter är inga problem, osv...
Kod: Markera allt
caes15@sweet: ls -l
total 20
drwxr-xr-x 2 caes15 20152 4096 Sep 13 01:04 example/
-rwxr-xr-x 1 caes15 20152  629 Sep 13 00:04 hello-web.cgi*
-rwxr-xr-x 1 caes15 20152  731 Sep 13 00:19 hello-web2.cgi*
-rwxr-xr-x 1 caes15 20152 1894 Sep 13 14:51 hello.cgi*
-rwxr-xr-x 1 caes15 20152  754 Sep 13 02:48 hello.py*

Någon som har råkat ut för liknande problem och som har lyckats lösa det? :)
Jag har sökt efter exec(), open(xxx).read(), på olika forum men hittar ingen kodsnutt som liknar det sättet att "öppna" och "läsa/köra" en annan *.py file.
Tacksam för hjälp!
//CE. ;)
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10988
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg14 sep 2015, 16:14

Exemplet execute another file from this cgi-skript "fungerar" men inte i vår cgi-miljö. Så här ser det ut om du provkör exemplet:

http://www.student.bth.se/~mosstud/dbwe ... r-file.cgi

Problemet är att jag har lässkyddat alla python-filer som ligger i www-katalogen. Det betyder att webbservern inte kan läsa filen som inkluderas. Därav felmeddelandet:
The file /home/saxon/teachers/com/mosstud/www/dbwebb-kurser/python/example/cgi/execute-another-file.py is not available, check if its there and set chmod to 644.


Principen för exemplet, hur man kan göra, ställer alltså. Men i vår webbmiljö har jag justerat rättigheterna så det går inte att köra det.
...
..:
.... /mos

caes15

html-kodare

  • Inlägg: 19
  • Blev medlem: 30 aug 2015, 18:14

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg14 sep 2015, 17:07

mos skrev:Problemet är att jag har lässkyddat alla python-filer som ligger i www-katalogen. Det betyder att webbservern inte kan läsa filen som inkluderas. Därav felmeddelandet.
Principen för exemplet, hur man kan göra, ställer alltså. Men i vår webbmiljö har jag justerat rättigheterna så det går inte att köra det.


Hej Mikael,
Tusen tack för svaret och förklaring :) . Det kanske borde framgå i exemplet att det inte kommer att fungera "på riktigt" på web browsern pga det är inte tillåtet att köra/anropa *.py filer från *.cgi.
Lite tråkigt för jag satt timmar och försökte klura ut vad som var felet och misstänkte att det låg på servers sidan, som det faktiskt är med rättigheterna ;)
Också tråkigt för i mina redovisningssvar till kmom01 undrade jag varför måste man skriva redovisningar två gånger: i en *.py fil och i en *.cgi fil. Jag ville skriva bara en gång i *.py och anropa den från *.cgi. Men nu verkar det som det inte kommer att fungera??

Hur är det tänkt att vi skall redovisa hello.cgi som anropar hello.py? Det fungerar på terminalen som sagt :)

Kod: Markera allt
~/dbwebb-kurser/python/me/kmom01/hello
$ python3 hello.cgi
Content-Type: text/html; charset=utf-8

<p>_FileName : hello.py
<p>_Full path to the file : /home/Arian/dbwebb-kurser/python/me/kmom01/hello/hello.py

<p>___PY FILE : hello.py
<p>___FULL PATH : /home/Arian/dbwebb-kurser/python/me/kmom01/hello/hello.py

<p>------------------------------------</p>
<h2> Now executing the file hello.py </h2>
<p>------------------------------------</p>

Hello World calling from a function.

Just saying Hello World!
------------------------

Hello World in a variable.

<html>
        <body>
                <hr>
                <h1>Hello to this World folks :-)!</h1>
                <hr> <code>... written by caes15</code>
        </body>
</html>
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10988
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Möjliga anledningar till att ditt CGI-skript krashar

Inlägg14 sep 2015, 17:45

caes15 skrev:Hur är det tänkt att vi skall redovisa hello.cgi som anropar hello.py? Det fungerar på terminalen som sagt


Exemplet hello.cgi ingår inte i det som kollats på redovisningen, det är "bara" ett exempel-program.

Mmm, det är lite dumt att exempelprogrammet (läs från/exekvera annan fil) inte fungerar. kanske skulle jag skriva om det så att det läser från en textfil som delas mellan programmen istället. Säg till så kodar vi ihop det, om så önskas.

I kmom01 är det annars bara copy&paste som är grejen (även om det kan kännas udda). I redovisningstexterna framöver så skriver man dem enbart i me.cgi och redovisning.cgi enligt:
http://dbwebb.se/python/redovisa#text
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 16 gäster