Image uploads not working with lighttpd

Hi I thought it was time to test my app out on a real server. So i have
installed lighttpd following the instruction on the rails wiki.
everything seems to work fine except the file upload page. It doesn’t
throw any errors, it just doesn’t seem to write the image to disk.
Nothing is printed to the lighttpd error log when the file upload fails.
I thought it might be my code but i downloaded the code from the rails
recipes book and tested the processingimage recipe and the same thing
happens. I installed lighttpd and libfcgi-ruby1.8 using synaptic. Below
is my lighttpd.conf. I would be very grateful for any and all
suggestions. Totally new to lighttpd and don;t know what else to try.

Debian lighttpd configuration file

############ Options you really have to take care of

modules to load

mod_access, mod_accesslog and mod_alias are loaded by default

all other module should only be loaded if neccesary

- saves some time

- saves memory

server.modules = (











server.max-request-size = 100000

$HTTP[“useragent”] =~ “^(.MSIE.)|(.AppleWebKit.)$” {
server.max-keep-alive-requests = 0

new way. include as many sockets as you want. I use 5.

fastcgi.server = (".fcgi" => ( “V_O_2” =>
( “min-procs” => 1,
“max-procs” => 5,
“socket” => “/tmp/V_O_2.fastcgi”,
“bin-path” => “/home/ghost/user/V_O_2/public/dispatch.fastcgi”

a static document-root, for virtual-hosting take look at the

server.virtual-* options

server.document-root = “/home/ghost/user/V_O_2/public”

where to send error-messages to

server.errorlog = “/var/log/lighttpd/error.log”

files to check for if …/ is requested

index-file.names = ( “index.php”, “index.html”,
“index.htm”, “default.htm” )

Use the “Content-Type” extended attribute to obtain mime type if


mimetype.use-xattr = “enable”

accesslog module

accesslog.filename = “/var/log/lighttpd/access.log”

deny access the file-extensions

~ is for backupfiles from vi, emacs, joe, …

.inc is often used for code includes which should in general not be


of the document-root

url.access-deny = ( “~”, “.inc” )

######### Options that are good to be but not neccesary to be changed

bind to port (default: 80)

#server.port = 81

bind to localhost only (default: all interfaces)

server.bind = “localhost”

error-handler for status 404

#server.error-handler-404 = “/error-handler.html”
#server.error-handler-404 = “/error-handler.php”

to help the rc.scripts = “/var/run/”

Format: .html

-> …/status-404.html for ‘File not found’

#server.errorfile-prefix = “/var/www/”

virtual directory listings

dir-listing.encoding = “utf-8”
server.dir-listing = “enable”

send unhandled HTTP-header headers to error-log

#debug.dump-unknown-headers = “enable”

only root can use these options

chroot() to directory (default: no chroot() )

#server.chroot = “/”

change uid to (default: don’t care)

server.username = “www-data”

change uid to (default: don’t care)

server.groupname = “www-data”

compress module

#compress.cache-dir = “/var/tmp/lighttpd/cache/compress/”
#compress.filetype = (“text/plain”, “text/html”)

status module

status.status-url = “/server-status”

status.config-url = “/server-config”

url handling modules (rewrite, redirect, access)

url.rewrite = ( “^/$” => “/server-status”


url.redirect = ( “^/wishlist/(.+)” =>$1” )

define a pattern for the host url finding

%% => % sign

%0 => domain name + tld

%1 => tld

%2 => domain name without tld

%3 => subdomain 1 name

%4 => subdomain 2 name

evhost.path-pattern = “/home/storage/dev/www/%3/htdocs/”

expire module

expire.url = ( “/buggy/” => “access 2 hours”,

“/asdhas/” => “access plus 1 seconds 2 minutes”)


rrdtool.binary = “/usr/bin/rrdtool”

rrdtool.db-name = “/var/www/lighttpd.rrd”

this is a hack

alias.url = (“invalid” => “invalid”)

handle Debian Policy Manual, Section 11.5. urls

and by default allow them only from localhost

$HTTP[“host”] == “localhost” {
global {
alias.url += (
“/doc/” => “/usr/share/doc/”,
“/images/” => “/usr/share/images/”
dir-listing.activate = “enable”

variable usage:

variable name without “.” is auto prefixed by “var.” and becomes

#bar = 1
#var.mystring = “foo”

integer add

#bar += 1

string concat, with integer cast as string, result: “ = “www.” + mystring + + “.com”

array merge

#index-file.names = (foo + “.php”) + index-file.names
#index-file.names += (foo + “.php”)

external configuration files

mimetype mapping

include_shell “/usr/share/lighttpd/”

load enabled configuration files,

read /etc/lighttpd/conf-available/README first

include_shell “/usr/share/lighttpd/”

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs