Rails & PHP

I am inheriting a legacy PHP website and I want to add a few Rails pages.

Is there anyone who can recommend some info on how to add RoR to a PHP-driven website?

Ralph Shnelvar

I've never tried this, but if you're using Passenger, it seems likely that you could add the handler directive to your Apache configuration (or maybe it would inherit the php handler stuff if the server can already host php by default) and then put the entire PHP site in the public folder. Just make sure that you don't clobber any of your routes, and it should work fine. If you're not hitting the same database with PHP and Rails, you could possibly get away with as little as that.

Walter

Yea, I would even consider keeping the existing PHP app at "www.xyz.com" and making your Rails app "services.xyz.com" or something like that

But Walter's hack might work. Alternatively there's some fancy mod_rewrite I'm sure apache will do to direct request to the right app.

But consider that PHP and Rails are mostly different technologies and you should have no expectation that they will work "together" -- what you're trying to do is a hack and probably should only be done if absolutely necessary and/or as a band-aid fix.

At the risk of going Off Topic, I would ask why on earth would you do that? *I think* that's a terrible idea. Debugging and maintenance WILL hurt you. Not to mention that every somebody does that kind of things a baby Panda dies.

Jason,

Friday, April 6, 2012, 2:18:53 PM, you wrote:

Yea, I would even consider keeping the existing PHP app at "www.xyz.com" and making your Rails app "services.xyz.com" or something like that

But Walter's hack might work. Alternatively there's some fancy mod_rewrite I'm sure apache will do to direct request to the right app.

But consider that PHP and Rails are mostly different technologies and you should have no expectation that they will work "together" -- what you're trying to do is a hack and probably should only be done if absolutely necessary and/or as a band-aid fix.

I am inheriting a legacy PHP website and I want to add a few Rails pages.

Is there anyone who can recommend some info on how to add RoR to a PHP-driven website?

I've never tried this, but if you're using Passenger, it seems likely that you could add the handler directive to your Apache configuration (or maybe it would inherit the php handler stuff if the server can already host php by default) and then put the entire PHP site in the public folder. Just make sure that you don't clobber any of your routes, and it should work fine. If you're not hitting the same database with PHP and Rails, you could possibly get away with as little as that.

Walter

-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

What a simple and wonderful idea! Thanks!!!

Ralph Shnelvar

PHP + Ruby = Phuby =)

https://github.com/tenderlove/phuby

http://www.youtube.com/watch?v=4_zq9oW71sg

Depends on what you mean by “PHP-driven” - if it’s doing its own URL rewriting (Wordpress’s clean URLs, for instance) you’re probably best served putting the Rails stuff on a subdomain or in a subdirectory.

On the other hand, if it’s a plain PHP site where URLs just end in .php everywhere, you can do some mod_rewrite magic (tune the paths as appropriate):

RewriteCond /home/web/public_html/%{REQUEST_URI} -f

RewriteRule ^(.*) /home/web/public_html/$1 [QSA,L]

RewriteCond /home/web/public_html/%{REQUEST_URI}/index.php -f

RewriteRule ^(.*) /home/web/public_html/$1/index.php [QSA,L]

Then point your DocumentRoot to the public dir in your Rails app, as Passenger’s instructions indicate, and add this:

<Directory /home/web/public_html>

PassengerEngine off

to the Apache config as well, to avoid confusing Passenger with stuff in PHP-land. The result will be that any incoming URL which matches either an actual PHP file, or a directory with an index.php file will be handled by PHP, while everything else goes to the Rails app.

One other thing - for additional integration, you may want to access the PHP session from the Rails app. (Going the other way is NOT recommended, as you’d need to be able to un-Marshal Ruby objects in PHP) To do this, you’ll need a gem like php-serialize (https://github.com/jqr/php-serialize) and you’ll need to find where your particular PHP installation stores session data - sometimes this is in /tmp, sometimes elsewhere. The files are typically named after the session token (found in “cookies[‘PHPSESSID’]” in your controllers). PHP does some locking to avoid multiple writers messing the whole thing up, but I’ve only ever needed to read from the PHP session, so I’m not sure exactly how that works.

Hope this helps!

–Matt Jones

Re: [Rails] Re: Rails & PHP Matt,

Saturday, April 7, 2012, 1:43:46 PM, you wrote: