| 
	
 | 
 Posted by Rasmus Lerdorf on 03/06/05 07:19 
Richard Lynch wrote: 
> timothy johnson wrote: 
>  
>>Is there a way to install two version of php on the same machine, and 
>>use them for two different users? 
>  
>  
> Option 1: 
> Install two copies of Apache, with different httpd.conf files, on two 
> different ports. 
> Somebody gets stuck using http://example.com:81 (or any port but 80) but 
> this gives everything you asked for. 
>  
> Option 2: 
> Use --enable-versioning while compiling PHP.  This definitely allowed for 
> PHP3 and PHP4 and *might* allow for 4&5...  Or not.  RTFM 
> But you won't get different Users. 
>  
> Option 3: 
> Install at least one of the two as CGI (fastCGI, whatever), and use a 
> different extension (.php4 or .php5) or use other means (ForceType, 
> AddHandler, AddType, etc) to change which is used on a per directory 
> basis.  Use suexec, if you UNDERSTAND THE RAMIFICATIONS to alter the user 
> of the CGI process.  Mis-use of suexec is incredibly dangerous.  YMMV  
> NAIAA  IANAL 
> The CGI usage will lose some minimal functionality.  HTTP Authentication 
> springs to mind, but there are 3 or 4 functions/features that just plain 
> won't work in CGI.  RTFM 
>  
> Option 4: 
> In terms of expenses/headaches, you will probably be better off just 
> buying a second machine.  Problem solved. 
 
Running 2 Apache instances is by far the easiest solution.  And to make  
it invisible to the end user you can ProxyPass connections from your  
port 80 server to your port 81 or whatever port you put it on. For  
example, I have a test app giving PHP 5.1 and the Yahoo Web Services a  
workout on a server that also has a bunch of PHP4 stuff. 
 
The URL is:  http://buzz.progphp.com 
This is actually being served off of a port 81 server.  The port 80 conf  
  file has this entry in the buzz vhost: 
 
ProxyPass / http://buzz.progphp.com:81/ 
 
Then in the port 81 server I just have a standard vhost config for buzz  
listening on port 81. 
 
If you go to the HTTP Headers block of: 
 
http://buzz.progphp.com/info.php 
 
You can see that you end up with: 
 
Host: buzz.progphp.com:81 
Via: 1.1 buzz.progphp.com (Apache/1.3.33) 
X-Forwarded-For: 24.6.1.160 
X-Forwarded-Host: buzz.progphp.com 
X-Forwarded-Server: buzz.progphp.com 
 
So the only thing you may need to change in an application running  
behind ProxyPass is if you have $_SERVER["REMOTE_ADDR"] somewhere.  
Change that to use $_SERVER["HTTP_X_FORWARDED_FOR"] instead. 
 
-Rasmus
 
[Back to original message] 
 |