lighttpd erkennt
cgi-Scripte per Default an der Dateiendung. Das hat dann den IMO nicht sonderlich sinnvollen Nebeneffekt, dass es egal ist wo diese Scripte liegen; sobald sie eine bestimmte Dateiendung haben und ausfuehrbar sind, werden sie auch ausgefuehrt. Schuld daran ist folgender Abschnitt in der lighttpd.conf
cgi.assign = ( ".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl" }
Wenn man - wie von Apache gewoehnt - will, dass Scripte nur in einem Verzeichnis Namens "cgi-bin" ausgefuehrt werden sollen, dann reicht es wenn man den oben genannten Eintrag kommentiert und durch folgenden ersetzt:
$HTTP["url"] =~ "^/cgi-bin/" {
cgi.assign = ( "" => "/usr/bin/perl" ) }
Wenn man jetzt auf ein ausfuehrbares Script ausserhalb des cgi-bin - Directory zugreifen will, wird dieses Script nicht mehr ausgefuehrt, sondern "nur" zum Download angeboten. Wenn man das auch nicht will, dann sollte man die Direktive static-file.exclude-extensions wie folgt erweitern
static-file.exclude-extensions = ( ".php", ".fcgi", ".pl", ".cgi" )
Danach werden Perlscripte nur noch ausgefuehrt, wenn sie unter cgi-bin liegen und ausfuehrbar sind.