Troubleshooting: Camping 2.0 on CGI on a shared host

Eric Mill kprojection at gmail.com
Wed Jul 16 17:51:53 EDT 2008


Also worth noting is that PATH_INFO isn't emptied - it's set to "/" or
"/login", the correct request path.

-- Eric

On Wed, Jul 16, 2008 at 5:40 PM, Eric Mill <kprojection at gmail.com> wrote:
> Unfortunately this isn't working.  I'm checking my ENV and
> REDIRECT_SCRIPT_NAME isn't set to anything.  I'm using the Rack spec
> to try to figure out an alternative.
>
> Right now, requests to "/" go to a Camping error page which says
> "/index.html not found!"  and requests to "/login" (which should go to
> a different controller) says "/login.html not found!".  PATH_INFO has
> been set to "/login.html" in this case.
>
> I also tried setting SCRIPT_NAME to be whatever REQUEST_URI is, but
> this has the same effect as using the REDIRECT_SCRIPT_NAME approach.
>
> Continuing to investigate,
> Eric
>
> On Wed, Jul 16, 2008 at 5:31 PM, Magnus Holm <judofyr at gmail.com> wrote:
>> Simply replace Testing with TestingFixed in dispatch.cgi:11 and
>> dispatch.fcgi:13 to see the diffenrence :-)
>>
>> On Wed, Jul 16, 2008 at 11:28 PM, Eric Mill <kprojection at gmail.com> wrote:
>>> Magnus, this is terrific information, thank you for looking into this.
>>>
>>> I'm trying to follow your example - you use ApacheFixer to make a
>>> "TestingFixed" class, but never use that class anywhere else.  Do you
>>> mean for the lines in dispatch.* to use "TestingFixed" instead of
>>> "Testing"?
>>>
>>> I'm trying to use this to resolve my problems as we speak,
>>> Eric
>>>
>>> On Wed, Jul 16, 2008 at 5:08 PM, Magnus Holm <judofyr at gmail.com> wrote:
>>>> This "bug" is actually Apache's fault. The problem occurs when you use
>>>> mod_rewrite to hide that you're using dispatch.cgi. When you use
>>>> "RewriteRule ^(.*)$ dispatch.cgi" the following happens:
>>>>
>>>> * SCRIPT_NAME is set to /dispatch.cgi (since that's the actual script
>>>> which gets ran)
>>>> * REDIRECT_SCRIPT_NAME is set to whatever SCRIPT_NAME was before
>>>> * PATH_INFO is emptied
>>>>
>>>> I've also tested this on 1.5 and it has the same problem. However, if
>>>> you use server/fastcgi.rb (not Rack as I've been testing with) you can
>>>> set the ENV['FORCE_ROOT'] to 1 and it will re-set SCRIPT_NAME and
>>>> PATH_INFO using REQUEST_URI, which will (partly) solve the problem.
>>>>
>>>> Right now, we have no FORCE_ROOT in Rack, but here's a simple fix:
>>>>
>>>> * Change .htaccess to "RewriteRule ^(.*)$ dispatch.cgi/$1" (You might
>>>> need to drop to slash).
>>>> * Add a middleware which sets SCRIPT_NAME to REDIRECT_SCRIPT_NAME
>>>> (http://pastie.org/235062)
>>>>
>>>> This isn't really our problem, but rather Apache (which should be able
>>>> to alias CGI-scripts with the correct headers). It probably won't
>>>> happen, so I guess we have to add some nasty hacks into Rack.
>>>>
>>>> I haven't tried this on any other servers (LightTPD/Nginx), but as
>>>> long as there is no URL-rewriting (I know LightTPD can do it with
>>>> FastCGI) it's probably no problem (maybe not even with, if it's smart
>>>> enough).
>>>>
>>>> Here is a simple app which shows @env (and works on both 1.5 and 2.0):
>>>> http://pastie.org/235078. It would be great if you could test it on
>>>> different setups and see which requires special treatment. Check out
>>>> the Rack-spec for how the variables should be set:
>>>> http://rack.rubyforge.org/doc/files/SPEC.html
>>>>
>>>> On Wed, Jul 16, 2008 at 5:07 PM, Eric Mill <kprojection at gmail.com> wrote:
>>>>>
>>>>> Bluebie -- I tried doing this with FastCGI with the same settings
>>>>> (changed .htaccess to point to dispatch.fcgi, changed dispatch file to
>>>>> use Rack::Handler::FastCGI.run, got the exact same results.  FastCGI
>>>>> will also suffer from these bugs.
>>>>>
>>>>> -- Eric
>>>>>
>>>>> On Mon, Jul 14, 2008 at 7:40 PM, Bluebie, Jenna
>>>>> <blueberry at creativepony.com> wrote:
>>>>> > We are talking about cgi here, not fast cgi. Specifically CGI's interactions
>>>>> > with mod_rewrite in apache.
>>>>> > _______________________________________________
>>>>> > Camping-list mailing list
>>>>> > Camping-list at rubyforge.org
>>>>> > http://rubyforge.org/mailman/listinfo/camping-list
>>>>> >
>>>>> _______________________________________________
>>>>> Camping-list mailing list
>>>>> Camping-list at rubyforge.org
>>>>> http://rubyforge.org/mailman/listinfo/camping-list
>>>>
>>>>
>>>>
>>>> --
>>>> Magnus Holm
>>>> _______________________________________________
>>>> Camping-list mailing list
>>>> Camping-list at rubyforge.org
>>>> http://rubyforge.org/mailman/listinfo/camping-list
>>>>
>>> _______________________________________________
>>> Camping-list mailing list
>>> Camping-list at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/camping-list
>>>
>>
>>
>>
>> --
>> Magnus Holm
>> _______________________________________________
>> Camping-list mailing list
>> Camping-list at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/camping-list
>>
>


More information about the Camping-list mailing list