Skip to main content

lighttpd & symlinks

My Lighttpd/FGCI/PHP installation sometimes has difficulties with php scripts which are really symlinks. Now, to be honest I have not fully debugged this issue yet, but sparse error messages like "No input file specified" and blaming PHP are not really helpful when no workaround is in sight. Some said that setting broken-scriptfilename would help, which was been introduced in 2005, but with lighttpd-1.5, the whole fast-cgi setup has been changed quite a bit and this option is not applicable any more. To be fair, there's even a FAQ entry for this particular error message, but it was not as straightforward as it looked like:

>  You forgot to add '''cgi.fix_pathinfo=1 to your php.ini''' file
....tried that, with no effect.
> If open_basedir is set, make sure the requested file 
is below one of the directories which is specified there.
check!
 > If you are running PHP with different permissions than lighttpd
nope.
 > Make sure you did not set doc_root or userdir in php.ini, or if you have 
set it, make sure it has the correct value
....there are different vhosts here, each having a different server.document-root set, but only one php.ini where I could set doc_root. However, php.ini/user_dir value was unset - when I set it to the same value as userdir.path in lighttpd, at least the symlinks below the ~user directories were working again! Of course, one could have different values for userdir.path (or is this a global option?), but I guess having a single userdir.path value is much more feasible than having just one server.document-root set.