Troubleshooting: Camping 2.0 on CGI on a shared host
Eric Mill
kprojection at gmail.com
Wed Jul 16 20:08:14 EDT 2008
OK, I am good to go, working CGI and FastCGI .htaccess and dispatch.*
files written. I changed REDIRECT_URI to REQUEST_URI.
For CGI:
* dispatch.cgi: http://pastie.org/235313
* .htaccess for CGI: http://pastie.org/235315
For FastCGI, based on the above:
* in dispatch.cgi, change Rack::Handler::CGI.run to be
Rack::Handler::FastCGI.run
* in .htaccess change dispatch.cgi to be dispatch.fcgi
Awesome. Thanks for everyone's help. Especially Magnus and Jenna,
you two rule.
This seems like a good candidate for the github Camping wiki -- do
people even know that thing exists, is it worth it? Or should I just
add it to the Camping wiki on why's site?
-- Eric
On Wed, Jul 16, 2008 at 6:13 PM, Eric Mill <kprojection at gmail.com> wrote:
> The 500-handling I'm used to appears to be gone. What's the best approach here?
>
> -- Eric
>
> On Wed, Jul 16, 2008 at 6:08 PM, Eric Mill <kprojection at gmail.com> wrote:
>> I think I've got it working, with this as the 'fixer' call:
>>
>> def call(env)
>> env['SCRIPT_NAME'] = '/'
>> env['PATH_INFO'] = env['REDIRECT_URL']
>> @app.call(env)
>> end
>>
>> I think you might have meant REDIRECT_URL and not REDIRECT_SCRIPT_NAME?
>>
>> Thank you Magnus!
>>
>> -- Eric
>>
>> On Wed, Jul 16, 2008 at 5:51 PM, Eric Mill <kprojection at gmail.com> wrote:
>>> 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