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.