CGI-script geeft foutcode 500

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Maxie001
  • Registratie: Juli 2015
  • Laatst online: 24-10-2023
Beste allemaal,

Sinds een half jaar ben ik bezig met een leuke webapp. Daarvoor gebruik ik een API, waar een API-key voor nodig is. Ik wil deze niet in mijn websitebestanden rond laten slingeren, want deze is privé. Nu dacht ik er aan om de requests naar de API te laten doen door een (of meerdere) CGI-scripten. Het idee is dan dat in de CGI-scripten de API-key veilig staat, aangezien dat script niet publiek toegankelijk is.

Nu maak ik gerbuik van hosting van Strato, en ik heb daar de mogelijkheid om Pearl-scripts te gebruiken. Deze scripts werken alleen niet: elke keer als ik het adres van een script invoer in een webbrowser, staat er:

"Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request."

Mijn vraag is nu: heeft iemand een idee wat ik zou moeten doen?

Ik heb al op dit probleem gezocht, maar ik vond alleen iemand die een script met Windows-codering had geüpload. Ik gebruik zelf Linux Mint dus dat ik hetzelfde probleem heb lijkt me niet.

Bedankt voor het lezen! Als er iets niet duidelijk is hoor ik het graag!
Met vriendelijke groet,

Max
(P.S. dit is een zeer oud Tweakers-account van me, negeer alsjeblieft die cringe gebruikersnaam :) )

Beste antwoord (via Maxie001 op 12-06-2022 10:25)


  • Juup
  • Registratie: Februari 2000
  • Niet online
Log eens in op je Strato omgeving en kijk in de error logs.
Als je ook SSH toegang hebt, draai dan het script eens vanaf de command-line.

Oh het is Perl niet Pearl ;-)

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.

Alle reacties


Acties:
  • +2 Henk 'm!

  • ShitHappens
  • Registratie: Juli 2008
  • Laatst online: 02-10 22:26
Dus als ik het goed begrijp, is dit je eigen script dat je bij Strato host, en dus tegen een fout aanloopt.
Kun je dan server-side iets in de logs vinden, wat op een foutmelding kan wijzen? Of als je deze lokaal in Pearl draait?

Want de foutmelding an sich, die terugkomt in de browser, zegt totaal niets wat er binnen de applicatie misgaat. Zou ook heel slordig zijn om dit soort foutmeldingen gedetailleerd naar een gebruiker terug te geven, dat kan misbruikt worden. Dus dit probleem zit echt ergens in het script. Zou 't bijvoorbeeld kunnen zijn dat die API down is, de key niet meer geldig of de response opeens van een onhandelbaar formaat is?
Je zou 't probleem dus nog verder kunnen isoleren, door eens handmatig (Postman oid) die API call uit te voeren, kijken of dat deel in elk geval goed gaat.

(Overigens waan je nog steeds niet veilig door op die manier een API key te bewaren, mocht iemand toegang krijgen tot 't filesystem van je server lekt 'ie nog steeds. Google maar eens secrets management of secrets injecting hoe dit netter kan; maar probleem voor later)

[ Voor 14% gewijzigd door ShitHappens op 11-06-2022 17:09 ]


Acties:
  • 0 Henk 'm!

  • Maxie001
  • Registratie: Juli 2015
  • Laatst online: 24-10-2023
Jeetje, ShitHappens, bedankt voor je snelle reactie!

Wat er eigenlijk aan de hand is, is dat ik überhaupt geen script kan maken dat een ander antwoord geeft dan een foutmelding. Ik heb een webstie geschreven in HTML, CSS en vooral veel JavaScript, dus ik dacht eerst even een "Hello World"-scriptje te maken zodat ik in ieder geval wist dat ik hiermee aan de slag kon.

Dus ik heb gezocht naar verschillende manieren om een script te maken. Maar het is me nog niet gelukt om een bevredigend antwoord van de server te krijgen.

Je vraagt of ik een Pearl-script al lokaal heb gedraaid. Dat heb ik nog niet gedaan. Ik gebruik om mijn website te testen Apache2, omdat dat zo lekker werkt met Linux. Toen ik opzocht hoe ik CGI aan kon zetten in deze software zag ik dat het vrij omslachtig was. Omdat ik niet zo goed wist wat ik aan het doen was heb ik dat maar niet gedaan. Ik zal kijken of het toch mogelijk is om dat aan te zetten. Als je toevallig een goede manier weet, dan probeer ik die graag uit!

Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 21:49

DukeBox

loves wheat smoothies

Heb je überhaupt support voor perl ?

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Log eens in op je Strato omgeving en kijk in de error logs.
Als je ook SSH toegang hebt, draai dan het script eens vanaf de command-line.

Oh het is Perl niet Pearl ;-)

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • +1 Henk 'm!

  • Lrrr
  • Registratie: Maart 2011
  • Laatst online: 21:09
Jeetje, ShitHappens, bedankt voor je snelle reactie!

Wat er eigenlijk aan de hand is, is dat ik überhaupt geen script kan maken dat een ander antwoord geeft dan een foutmelding. Ik heb een webstie geschreven in HTML, CSS en vooral veel JavaScript, dus ik dacht eerst even een "Hello World"-scriptje te maken zodat ik in ieder geval wist dat ik hiermee aan de slag kon.

Dus ik heb gezocht naar verschillende manieren om een script te maken. Maar het is me nog niet gelukt om een bevredigend antwoord van de server te krijgen.

Je vraagt of ik een Pearl-script al lokaal heb gedraaid. Dat heb ik nog niet gedaan. Ik gebruik om mijn website te testen Apache2, omdat dat zo lekker werkt met Linux. Toen ik opzocht hoe ik CGI aan kon zetten in deze software zag ik dat het vrij omslachtig was. Omdat ik niet zo goed wist wat ik aan het doen was heb ik dat maar niet gedaan. Ik zal kijken of het toch mogelijk is om dat aan te zetten. Als je toevallig een goede manier weet, dan probeer ik die graag uit!
In principe heb je volgens mij niet per sé CGI nodig om bijv. een Hello World-scriptje te draaien. De meeste Linux-distributies hebben Perl zelfs standaard geïnstalleerd. Dit kan je checken door het volgende commando in de terminal uit te voeren:

code:
1
$ perl -v

(niet het dollarteken invoeren, dit geeft de shell prompt aan)

Je zou dan zoiets moeten zien:

code:
1
2
3
4
5
6
7
8
9
10
11
This is perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux-gnu-thread-multi
(with 71 registered patches, see perl -V for more detail)

Copyright 1987-2017, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.


Dan neem je een Hello World-script:

Perl:
1
2
3
4
#!/usr/bin/perl

# This will print "Hello, World"
print "Hello, world\n";


Sla deze bijv. op als hello.pl en draai hem dan:

code:
1
2
$ perl hello.pl
Hello, world


Kijk eens naar de volgende tutorial waar ik dit vandaan heb: https://www.tutorialspoint.com/perl/index.htm deze heeft ook een sectie over CGI.




Je hebt ook een andere optie, namelijk het gebruiken van PHP i.p.v. Perl (is een beetje een persoonlijke voorkeur). Dit werkt ongeveer hetzelfde maar je moet PHP wel eerst zelf installeren:

code:
1
2
$ sudo apt update
$ sudo apt install php


Het verschil is dat je bij PHP geen CGI gebruikt als je je script eenmaal op de server gaat draaien.

En als je een Basic pakket of hoger hebt bij Strato lijkt het erop dat ze ook support voor Python en Ruby hebben.

I am Lrrr, ruler of the planet Omicron Persei 8! | Mijn custom CSS-snippets


Acties:
  • 0 Henk 'm!

  • Maxie001
  • Registratie: Juli 2015
  • Laatst online: 24-10-2023
Juup schreef op zaterdag 11 juni 2022 @ 18:13:
Log eens in op je Strato omgeving en kijk in de error logs.
Als je ook SSH toegang hebt, draai dan het script eens vanaf de command-line.

Oh het is Perl niet Pearl ;-)
Bedankt! Ik wist niet dat je log files in kon zien!
Ik zie dit staan:
code:
1
2
11.06.2022 16:51:21 cgi.pl: (8)Exec format error: 5433225-exec cgi.pl failed permanently: cgi.pl
11.06.2022 16:51:21 End of script output before headers: cgi.pl


Edit: ik ga even online zoeken, nu ik weet wat er fout gaat is dat ineens veel makkelijker :)

[ Voor 8% gewijzigd door Maxie001 op 11-06-2022 18:50 ]


Acties:
  • 0 Henk 'm!

  • Maxie001
  • Registratie: Juli 2015
  • Laatst online: 24-10-2023
DukeBox schreef op zaterdag 11 juni 2022 @ 18:05:
Heb je überhaupt support voor perl ?
Dat vind ik een beetje lastig om te zeggen, omdat 't niet duidelijk is. Op de ene pagina staat dit:
Afbeeldingslocatie: https://tweakers.net/i/OjEKcqZS6buA9DiVKrrD5h680fU=/800x/filters:strip_exif()/f/image/5gdxn5WiUjRbsveQ4QlP0CRt.png?f=fotoalbum_large
(De eerste kolom is mijn pakket, maar bij alles is het dus inbegrepen)

...en op een andere pagina staat dit:
Opmerking:
Let op dat Perl pas vanaf het pakket STRATO Hosting Basic en PowerWeb Basic tot uw beschikking staat. Bovendien kan het pas worden uitgevoerd indien het zich in de map "cgi-bin" bevindt.
(Oftwel, het is niet overal inbegrepen)

Aangezien ik gewoon een cgi-map heb denk ik dat mijn pakket het wel ondersteund.

Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 21:49

DukeBox

loves wheat smoothies

Als een gewone print("Hello, World!\n"); niet werkt dan is de conclusie vrij snel getrokken.

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • Maxie001
  • Registratie: Juli 2015
  • Laatst online: 24-10-2023
DukeBox schreef op zaterdag 11 juni 2022 @ 19:47:
Als een gewone print("Hello, World!\n"); niet werkt dan is de conclusie vrij snel getrokken.
Ik heb het even uitgezocht: ik heb Hositng Basic, dat ondersteunt sowieso CGI-scripts.

Acties:
  • 0 Henk 'm!

  • sdk1985
  • Registratie: Januari 2005
  • Laatst online: 22:38
Ik neem aan dat je bij Strato gewoon de bestandsrechten kunt aanpassen en dus niet via een CGI script je api key hoeft te verbergen... Uberhaupt kun je normaal gesproken geen onverwerkt php bestand downloaden als website bezoeker. Dus je kunt het ook in PHP verbergen.

Hostdeko webhosting: Sneller dan de concurrentie, CO2 neutraal en klantgericht.


Acties:
  • +1 Henk 'm!

  • Maxie001
  • Registratie: Juli 2015
  • Laatst online: 24-10-2023
Ik heb de oplossing gevonden! Blijkbaar moest ik:

#!/usr/bin/perl

vervangen door:

#!/usr/bin/perl -w

Twee letters verschil, en dat terwijl op de hulppagina's het bovenstaande staat. Bedankt iedereen voor het helpen, door de error logs kon ik de oplossing vinden!
Pagina: 1