[Lighttpd] CGI / CSS combi werkt niet

Pagina: 1
Acties:
  • 114 views sinds 30-01-2008
  • Reageer

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Ik ben een cgi programmaatje en heb een probleem met mijn css file De directory structuur ziet er zo uit

www-root/cgi-bin/programma
www-root/data/basis.css
www-root/data/data-file
www-root/data/html-template

Het programma gebruikt het html template, stopt daar data uit de data-file. In de template file staat een ref naar de css file.
Het geheel werkt naar wens in combinatie met thttpd. Nu wil ik het ook werkend hebben met lighttpd. Het probleem dat ik heb is dat de css file niet gebruikt wordt.
Lighttpd access log:
127.0.0.1 localhost - [02/Dec/2007:22:10:43 +0100] "GET /basis.css HTTP/1.1" 200 0 "http://localhost/cgi-bin/MiniPCs" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10"
127.0.0.1 localhost - [02/Dec/2007:22:11:27 +0100] "GET /cgi-bin/MiniPCs HTTP/1.1" 200 4723 "-" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10"


Ter verglijking die van thttpd:
127.0.0.1 - - [02/Dec/2007:22:13:26 +0100] "GET /cgi-bin/MiniPCs HTTP/1.1" 200 50000 "" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 "
127.0.0.1 - - [02/Dec/2007:22:13:26 +0100] "HEAD /basis.css HTTP/1.1" 304 0 "http://localhost:81/cgi-bin/MiniPCs" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 "

Hier wordt de css file opgevraagd mbv een HEAD. Dat verschil verbaast me omdat dit bij de browser vandaan komt.
edit:

De HEAD betekent dat de browser eerst checkt of het bestand veranderd is voordat hij besluit of hij hem opnieuw wil downloaden. Dat heeft dus niets met het probleem te maken.
Wat is het dan wel?

De cgi configuratie file van lighhtpd is bijna leeg:
server.modules  += ( "mod_cgi" )
cgi.assign      = (
        ".pl"  => "/usr/bin/perl",
        ".php" => "/usr/bin/php-cgi",
        ".py"  => "/usr/bin/python",
        ""     => ""
)


Beide webservers draaien trouwens als www-data, dus is er geen permissie probleem.

[ Voor 5% gewijzigd door Sir Isaac op 03-12-2007 21:18 ]


  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
niemand?

  • wzzrd
  • Registratie: Februari 2000
  • Laatst online: 08-02 16:57

wzzrd

The guy with the Red Hat

Denk dat je eerst even je code moet plaatsen met de stylesheet link erin.

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Die is nogal simpel:
code:
1
<link href="../basis.css" rel="stylesheet" type="text/css">

Maar als het hier aan lag zou het met thttpd ook niet werken.

  • wzzrd
  • Registratie: Februari 2000
  • Laatst online: 08-02 16:57

wzzrd

The guy with the Red Hat

Om maar even een open deur in te trappen: staat die server wel zo geconfiged dat 'ie ook daadwerkelijk bij die file kan -> ../

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
All files in mijn document-root zijn world readible, de server draait als www-data, dus dat lijkt met OK. Als dat het probleem zou zijn had ik geen "200 OK" response verwacht. Het vreemde is wel dat ik geen enkele file in de document-root kan opvragen.
De logs geven wel aan er geen bytes verstuurd zijn.

[ Voor 9% gewijzigd door Sir Isaac op 05-12-2007 23:26 ]


  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
De fout stond werd veroorzaakt door de cgi configuratie. In 10-cgi.conf stond
code:
1
2
3
4
5
6
cgi.assign      = (
        ".pl"  => "/usr/bin/perl",
        ".php" => "/usr/bin/php-cgi",
        ".py"  => "/usr/bin/python",
        ""     => ""
)


De laatste regel stond om er voor te zorgen dat het cgi programma (een C binary) wordt uitgevoerd. Bijeffect was dat alle andere files (behalve perl, php en python scripts) ook als cgi executables werden beschouwd.
Als ik de laatste regel uitcommentarieer (wat een woord), werkt alles wel, behalve dat mijn C programma niet meer wordt uitgevoerd. Nu nog fixen, dat zal haast wel ergens te vinden moeten zijn.

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Het werkt nu!
code:
1
2
3
$HTTP["url"] =~ "^/cgi-bin/" {
        cgi.assign = ( "" => "" )
}

in 10-conf.cgi zorgt dat alleen files in de cgi-bin uitgevoerd worden.
Pagina: 1