Apache2 + mod_fcgid + php stopped working after upgrade from Debian squeeze to wheezy
I've updated my server from Debian squeeze to Debian wheezy. On this server are several apache2 vhost which running php via mod_fcgid (I'm also using mod_suexec but this shouldn't be the problem). After the update all my php-sites are not working anymore, apache2 delivers php Source-Code if I request a site running php. All my log files
- apache2/error.log
- apache2/access.log
- apache2/suexec.log
- and the vhosts error/access logs
didn't come up with any errors, not even warnings. All neccesarry modules are installed and loaded. I searched for a possible solution for hours now, without any effort. Here is a sample vhost file ("sensitive" data is replaced, user/group and domain):
<VirtualHost *:80>
ServerName example.com
SuexecUserGroup john-doe john-doe
AddHandler fcgid-script .php
DocumentRoot "/var/www/example.com/data"
DirectoryIndex index.php index.html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/var/www/example.com/data">
Options Indexes MultiViews FollowSymLinks +ExecCGI
FCGIWrapper /var/www/example.com/php-fcgi/php-fcgi-starter .php
Order allow,deny
allow from all
AllowOverride All
</Directory>
ErrorLog /var/www/example.com/logs/error.log
LogLevel warn
CustomLog /var/www/example.com/logs/access.log combined
ServerSignature Off
</VirtualHost>
Any ideas anyone? I asked this question on superuser.com too, hope this is alright.
Solution 1:
Now I stumbled upon the solution by myself. The problem is caused by an update of mod_fcgid which changed the directives used in the vhost configs. The changes could be seen here (this is what I stumbled upon).
The directive
FCGIWrapper /var/www/example.com/php-fcgi/php-fcgi-starter .php
has to be changed to
FcgidWrapper /var/www/example.com/php-fcgi/php-fcgi-starter .php
The documentation says
"All directives have been renamed in order to use a common prefix "Fcgid". Underscores in directive names have been eliminated in favor of CamelCase. The old directive names will still work but are deprecated. To fix your configuration you can use the sed script build/fixconf.sed."
but it seems like the old directive names didn't work anymore for now. The changes have done the trick for me, maybe this will help someone else.