# Image uploads not working with lighttpd

**URL:** <https://www.ruby-forum.com/t/image-uploads-not-working-with-lighttpd/101760>\
**Category:** Rails\
**Created:** [August 7, 2006, 7:56pm UTC](https://www.ruby-forum.com/t/image-uploads-not-working-with-lighttpd/101760 "2006-08-07T19:56:34Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [August 7, 2006, 7:56pm UTC](https://www.ruby-forum.com/t/image-uploads-not-working-with-lighttpd/101760/1 "2006-08-07T19:56:34Z")

</div>

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.  
regards  
C

# 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 = (  
“mod\_access”,  
“mod\_alias”,  
“mod\_accesslog”,  
“mod\_rewrite”,  
“mod\_redirect”,  
“mod\_fastcgi”,

# “mod\_status”,

# “mod\_evhost”,

# “mod\_compress”,

# “mod\_usertrack”,

# “mod\_rrdtool”,

# “mod\_webdav”,

# “mod\_expire”,

# “mod\_flv\_streaming”,

# “mod\_evasive”

)

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

possible

# 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

part

# 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

server.pid-file = “/var/run/lighttpd.pid”

## 

## 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/(.+)” =\>

“[http://www.123.org/$1](http://www.123.org/$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

# 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

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

## integer add

#bar += 1

## string concat, with integer cast as string, result: “[www.foo1.com](http://www.foo1.com)”

#Server.name = “www.” + mystring + var.bar + “.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/create-mime.assign.pl”

## load enabled configuration files,

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

include\_shell “/usr/share/lighttpd/include-conf-enabled.pl”
