I should also mentioned I tried prepending '/shindig' to my configuration.php's 'web_prefix' property as well as to 'default_iframe_prefix' and with or without I still get a 404 on the ifr? request.
From: Chris Markham Sent: Wednesday, March 17, 2010 5:47 PM To: '[email protected]' Subject: RE: Default (sample?) gadgets directory not in PHP build 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.
