Php – SuExec: “command not in docroot” Even Though It Is

apache-2.2arch-linuxfastcgiPHPsuexec

  • Arch Linux 2011.08.19 (Linux 3.4.2 i686)
  • Apache 2.2.22 with SuExec
  • PHP 5.4.4 (cli) via FastCGI

My sites were all working fine earlier… I’m not sure when it happened because I noticed it over a week later (I’m guessing perhaps after a system upgrade), but all my VirtualHosts went offline with the dreaded “Premature end of script headers: php-fcgid-wrapper” 500 error.

SuExec logs gave me this for each site:

[2012-07-16 00:45:02]: uid: (1001/site) gid: (1001/site) cmd: php-fcgid-wrapper
[2012-07-16 00:45:02]: command not in docroot (/var/www/site/fcgi-bin/php-fcgid-wrapper)

This isn’t (or at least shouldn’t be) true… I automatically compile Apache with --with-suexec-docroot=/srv/www set. Still, I tried a sanity check, to see what docroot SuExec actually thought it had:

$ suexec -V
suexec policy violation: see suexec log for more details

For which the logs claimed:

[2012-07-16 01:07:52]: too few arguments

Tried it with sudo as well; same thing. So, even this makes no sense, and prevents me from being able to diagnose the problem properly.

Another thing I tried was moving everything from /srv/www to /var/www, the default docroot, to see if maybe it had reverted to the raw repository version during the upgrade. Updated my VirtealHosts, restarted Apache, but still got the same 500 errors.

What else could be causing this?

Best Answer

You need to recompile suexec.c --with-suexec-docroot=/srv/www