More follow-up.
At this site: http://sites.google.com/site/anashkb/shindig-php
I found out about the .htaccess file in the shindig home dir that needed to me 
modified to match my http.conf rule locating the shindig document root. this

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule (.*) /shindig/index.php [L]                   <!-needed to 
modify the path -->
        php_flag always_populate_raw_post_data On
        php_flag magic_quotes_gpc Off
</IfModule>

is what maps all the PHP scripts to index.php, which is the file configured in 
httpd.conf to be served at a directory/ request
in this directive:

<IfModule dir_module>
    DirectoryIndex index.php
</IfModule>

So I can see that my original request, that the default/sample gadget is not in 
the build was misinformed and I'm starting to see how PHP scripts are called to 
get to a gadget, but in my install the "ifr?" request is still being returned 
with a 404.

To access "ifr" directly, I inspected index.php and tried:
 http:<my.host>/src/gadgets/servlet/GadgetRenderingServlet?= 
http://www.labpixies.com/campaigns/todo/todo.xml

Which threw the following into my http server error log:

[Wed Mar 17 17:14:13 2010] [error] [client xxx.xxx.xxx.xxx] PHP Fatal error:  
require_once() [<a href='function.require'>function.require</a>]: Failed 
opening required 'src/common/HttpServlet.php' 
(include_path='.:/opt/shared_software/php-5.2.9.ssl/lib/php') in 
/data/opt/shindig/htdocs/shindig/src/gadgets/servlet/GadgetRenderingServlet.php 
on line 21

So I presume bypassing index.php is leaving requirements off the include_path.

But all that is more just to show that I can get to the file and that apache 
and PHP is parsing it.  So that leads me to think that the reason that 
index.php is throwing to the src/... scripts is because of the access directive 
named above. Should I duplicate what is in .htaccess into httpd.conf?  There's 
nothing else running on this server, only shindig.

I notice that the default directive conditional in .htaccess is "<ifModule 
mod_rewrite.c>" . But mod_rewrite is built-in to this Apache2 server I'm using 
(confirmed by phpinfo()) and if I try and AddModule mod_rewrite.c directive in 
my httpd.conf it chokes and refuses to restart the server.

So I tried removing the directive conditional check, and just explicitly 
declared the rewrite rules, as described in this nice tutorial:  
http://www.workingwith.me.uk/articles/scripting/mod_rewrite  (referred by 
linuxquestions.org).

So now my .htaccess file looks like (comments deleted):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /shindig/index.php [L]
php_flag always_populate_raw_post_data On
php_flag magic_quotes_gpc Off

Which still returns 404 from apache (not from index.php - I modified that one's 
"404" output string to be unique so as to be able to recognize it).

Just for yuks (i.e., desperate, try anything) I changed the target path of the 
RewriteRule to be:

RewriteRule(.*) /index.php [L]

Because I figured the DocumentRoot directive would be able to find it.   Nope.
So all-in-all this appears to be an Apache httpd config problem and not a 
shindig (per se) config problem.
I bet if I was running at localhost with a /var/www document root it would all 
be just fine.

Reply via email to