Perl och webbservern

Tråden skapades och har fått 11 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Kungsbacka
  • 2003-11-05 20:39

Hej,

Börjat greja lite med perl i webbsidor. Jo, jag vet, använda php istället. Men det är inte alltid ett alternativ.
I vilket fall som helst, borde inte följande kod skapa en fil med innehållet "hello world"?

#!/usr/bin/perl

print "Content-type:text/html\n\n";

$minfil="/Library/WebServer/Documents/minfil.txt";

open (FIL,">$minfil");
print FIL "hello world";
close (FIL);

  • Medlem
  • Kungsbacka
  • 2003-11-06 13:30

ingen?

  • Medlem
  • Österåker
  • 2003-11-06 13:42

Jag programmerar inte i Perl men såvitt jag kan se så fungerar ditt skript alldeles utmärkt (har provkört).

Jag tror chansen att få svar är större om du mer i detalj beskriver vad du vill uppnå och varför, vad felsymptomet och hur du gick tillväga för att framkalla just detta symptom.

  • Medlem
  • Kungsbacka
  • 2003-11-06 14:09

Hej,

Sorry, glömde skriva vad jag själv dök på för problem.

När jag kör detta script skapas ingen fil. Webbsidan blir helt blank, inga fel alltså...men ingen fil. Har sökt efter den utan framgång.

Misstänker att det kanske kan vara något rättighetsproblem av något slag?

Tacksam för all hjälp!

  • Medlem
  • Österåker
  • 2003-11-06 15:14

Hmm, om vi tar det steg för steg:

1.
Har du provat att köra skriptet i Terminalen, tex "perl hello.pl" så att du har verifierat att allt är schysst avseende själva Perl?

2. När du säger "Webbsidan blir helt blank" tolkar jag det som att du försöker köra skriptet mha den inbyggda Apache-servern. Såvitt jag vet är inte Perl-modulen aktiverad i Apples grundinställning.
Kontrollera att följande två rader i /etc/httpd/httpd.conf inte är bortkommenterade med ett #-tecken:

LoadModule perl_module libexec/httpd/libperl.so
AddModule mod_perl.c

  • Medlem
  • Stockholm
  • 2003-11-06 15:44

Fast kör man scriptet som cgi så ska mod_perl inte behövas tror jag. Och om scriptet inte kördes så borde väl koden skrivas ut i browsern, alternativt att Apache ger ett felmeddelande?

  • Medlem
  • Kungsbacka
  • 2003-11-06 16:11

Hej,

Provade att pilla lite i httpd.conf och starta om Apache, men det hjälpte inte.

Det verkar inte vara ett generellt problem att köra perl, för att kolla env-variabler eller enkelt bara skriva "hej" går bra. Det skiter sig dock när jag vill skriva till fil.

Flera ideér?

Mvh

Nu var det iofs ett tag sedan jag gjorde webbgrejer i perl senast, men det låter definitivt inte som att det är själva perl-skriptet som är problemet. Prova att köra via cgi i stället för via mod_perl, om det nu är mod_perl som ställer till det (tvivlar på det). Annars ska det bara vara att se till att www-användaren (eller gruppen 'www') har behörighet att skriva till den katalog du vill att filen ska hamna i.

  • Medlem
  • Svedala
  • 2003-11-06 21:59

Måste inte filen skapas INNAN den öppnas och man skriver till den?

  • Medlem
  • Kungsbacka
  • 2003-11-07 11:49
Citat:

Skrevs ursprungligen av nillon
Måste inte filen skapas INNAN den öppnas och man skriver till den?

Ska väl inte behövas egentligen. Men det funkar inte vare sig den finns eller inte.

Jag tror däremot Samuel kom med en idé... "gruppen www"? Jag är alltså helt grön vad gäller apache och MacOS X. Jag känner på mig att det är något jag missat där?

Citat:

Skrevs ursprungligen av Crafty
Ska väl inte behövas egentligen. Men det funkar inte vare sig den finns eller inte.

Det ska inte behövas... skulle ju bli lite svårt att skapa filer om filerna måste finnas innan man skapar dem. Blir inte många filer gjorda då inte

Citat:

Jag tror däremot Samuel kom med en idé... "gruppen www"? Jag är alltså helt grön vad gäller apache och MacOS X. Jag känner på mig att det är något jag missat där?

Av säkerhetsskäl så körs Apache med ett eget användarkonto, som på Mac OS X heter "www". Apache tillhör också gruppen "www". För att Apache ska kunna skriva till en fil måste alltså Apaches användarkonto ha skrivbehörighet i den katalog där filen ska skapas; det är alltså precis samma princip som för övriga användarkonton på datorn.

För att Apache ska kunna skriva till den katalog där du vill att filen ska hamna behöver du alltså sätta behörigheterna rätt. Det kan du antingen göra i terminalen med kommandona "chmod" (och ev. "chown" eller "chgrp" om du behöver ändra katalogens ägare/grupptillhörighet) eller via Finderns inforuta. Se bara till att antingen ge användaren "www" eller gruppen "www" behörighet att läsa och skriva, så bör det ordna sig.

  • Medlem
  • Kungsbacka
  • 2003-11-07 14:03

Sådär...nu funkade det mycket bättre!

Tack för all hjälp!

1
Bevaka tråden