[FASTCGI] FastCGIExternalServer, path used actually has to exist

Alex Cartwright alexc223 at googlemail.com
Fri Sep 3 13:50:48 EDT 2010


So is this a bug in fastcgi, or with Apache?

On Friday 03 September 2010 18:03:43 Rob wrote:
>   I can confirm that a slash in the FastCgiExternalServer path and
> corresponding Alias directives does cause the file not found error.
> 
> It's not clear to me, but it seems the interpretation takes place in
> the apache2 aliasing modules.
> 
> In the working example config below, If I change the
> "/myapp.rob.example.com"
> to "/myapp.rob.example.com/XXX, then  I see the apache2 error.log message:
> 
>     [error] [client 127.0.1.1] File does not exist: /myapp.rob.example.com
> 
> <VirtualHost *:80>
>    ServerName rob.example.com
>    AliasMatch ^/(.*) /myapp.rob.example.com
> </VirtualHost>
> 
> FastCgiExternalServer /myapp.rob.example.com  -socket
> /var/run/myapp/sockets/rob.example.com
> 
> The FastCGI app is written in C++ linking only with libfcgi (no libcgi++,
> we wrote our own C++ class wrappers).
> 
> Ubuntu Lucid
> Linux 2.6.32-24-generic-pae #42-Ubuntu SMP i686 GNU/Linux
> apache2    2.2.14-5ubuntu8.2
> apache2-mpm-worker    2.2.14-5ubuntu8.2
> apache2-utils    2.2.14-5ubuntu8.2
> apache2.2-bin    2.2.14-5ubuntu8.2
> apache2.2-common    2.2.14-5ubuntu8.2
> libapache2-mod-fastcgi    2.4.6-1
> libfcgi-dev    2.4.0-7.1ubuntu1
> libfcgi0ldbl    2.4.0-7.1ubuntu1
> 
> On 09/03/2010 08:40 AM, Alex Cartwright wrote:
> > Sorry, forgot to reply to all instead, here is the message again!
> > 
> > Ah ok, I've removed the Options line now, thanks for that.
> > 
> > Apache error log was showing me the following if the directory did not 
exist:
> >         File does not exist: /home/foobar/fcgi
> > 
> > and when the file did not exist:
> >         File does not exist: /home/foobar/fcgi/php53-fpm
> > 
> > However, I have got it working now with a different configuration, but
> > I still have some issues I'd like to discuss - here is my new config:
> > 
> > <VirtualHost *:80>
> > 
> >         ServerName foo.example.com
> >         
> >         SuexecUserGroup foobar foobar
> >         
> >         ErrorLog /var/log/apache2/vhosts/foo.example.com_error.log
> >         CustomLog /var/log/apache2/vhosts/foo.example.com_access.log
> >         combined DocumentRoot
> >         /home/foobar/domains/foo.example.com/public
> >         
> >         ## FastCGI + PHP-FPM
> >         AddHandler application/x-httpd-php .php
> >         Action application/x-httpd-php /fcgi-bin/php-fpm
> >         Alias /fcgi-bin/php-fpm /fcgi-extsrvs-phpfpm
> >         
> >         <Location /fcgi-bin/php-fpm>
> >         
> >                 Order Deny,Allow
> >                 Deny from all
> >                 Allow from env=REDIRECT_STATUS
> >         
> >         </Location>
> >         
> >         FastCGIExternalServer /fcgi-extsrvs-phpfpm -socket
> > 
> > /var/opt/php53/run/www.sock -user foobar -group foobar
> > 
> >         <Directory /home/foobar/domains/foo.example.com/public>
> >         
> >                 Options FollowSymLinks
> >                 AllowOverride AuthConfig FileInfo Limit Options=Indexes
> >                 
> >                 Order Deny,Allow
> >                 Allow from all
> >         
> >         </Directory>
> > 
> > </VirtualHost>
> > 
> > This works just fine, but if I change 'Alias /fcgi-bin/php-fpm
> > /fcgi-extsrvs-phpfpm' to 'Alias /fcgi-bin/php-fpm
> > /fcgi-extsrvs/phpfpm' and 'FastCGIExternalServer /fcgi-extsrvs-phpfpm
> > ...' to 'FastCGIExternalServer /fcgi-extsrvs/phpfpm ....' (note the -
> > replace with a / in fcgi-extsrvs-phpfpm) then I get the following
> > 
> > Apache errors:
> >         File does not exist: /fcgi-extsrvs
> > 
> > Doing that simple change (replacing a - with /) results in a 404
> > error. Is a slash not allowed? That is something which has confused
> > me.
> > 
> > Regards
> > 
> > On 3 September 2010 13:37, Rénald Casagraude<rcasagraude at interfaces.fr>  
wrote:
> >> Hi,
> >> On 3 sept. 2010, at 13:56, Alex Cartwright wrote:
> >> 
> >> This is the configuration that I am currently using, which is to use
> >> Apache2 with mod_fastcgi and PHP 5.3.3 with FPM
> >> 
> >> $ cat /etc/apache2/mods-available/fastcgi.conf
> >> /etc/apache2/sites-available/foo.example.com
> >> <IfModule mod_fastcgi.c>
> >> 
> >>         FastCgiWrapper /usr/lib/apache2/suexec
> >>         
> >>         ## PHP-FPM
> >>         AddHandler php53-fpm .php
> >>         Action php53-fpm /fcgi-bin/php53-fpm
> >>         <Location /fcgi-bin/php53-fpm>
> >>         
> >>                 Order Deny,Allow
> >>                 Deny from all
> >>                 Allow from env=REDIRECT_STATUS
> >>                 Options ExecCGI
> >>         
> >>         </Location>
> >> 
> >> </IfModule>
> >> 
> >> 
> >> Remove the Options ExecCGI that does not make sense in external calls
> >> 
> >> This works just fine, and I can run PHP scripts through php-fpm.
> >> However I have had to create the file "/home/foobar/fcgi/php53-fpm"
> >> which contains nothing.
> >> 
> >> What happens if the file does not extsts ?
> >> Regards,
> >> Rénald
> > 
> > _______________________________________________
> > FastCGI-developers mailing list
> > FastCGI-developers at mailman.fastcgi.com
> > http://mailman.pins.net/mailman/listinfo.cgi/fastcgi-developers
> 
> _______________________________________________
> FastCGI-developers mailing list
> FastCGI-developers at mailman.fastcgi.com
> http://mailman.pins.net/mailman/listinfo.cgi/fastcgi-developers


More information about the FastCGI-developers mailing list