I have heard that setting the
--prefix=PREFIX option when compiling PHP on linux will allow you to have more than one install of PHP at a time without them clashing. (I think the default if this isn’t set is
/usr/local). However, I’m not sure what exactly it does or what a good setting to use is. Furthermore, I’ve also heard that setting it to something other than the default value might make some PHP extensions harder to install.
./configure --prefix=PREFIX ...
I just realized that some of the other options such as
--exec-prefix might still need to be set to
/usr/local since they default to the value of
--prefix. This would cause problems if prefix was set to something like
web/phpalt because things like the
--sbindir is set to “–exec-prefix + /sbin`.
Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [same as prefix] --bindir=DIR user executables in DIR [EPREFIX/bin] --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] --libexecdir=DIR program executables in DIR [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data in DIR [PREFIX/share] --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data in DIR [PREFIX/com] --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] --libdir=DIR object code libraries in DIR [EPREFIX/lib] --includedir=DIR C header files in DIR [PREFIX/include] --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names
Based on what PHP is saying then it seems like you could set the following options without any side affects.
./configure --prefix=/custom/path --exec-prefix=/usr/local
However, this is just a guess.
If you want to switch between 5.2 and 5.3, you’re probably better off compiling both Apache and PHP from source, into special directories.
Basically, you could compile apache and php5.2 to some place like /web/php52 (giving –prefix=/web/php52 to
configure for both apache and php. Then do the same for apache/php53 with a prefix like /web/php53
You could even get tricky and do things like symlink various configs between the two apache installations to keep things consistent (so the only difference is that one is running 5.3 and the other 5.2)
Then when you want to start up your 5.2 server, you just say:
$ /web/php52/bin/apachectl start
and then to switch over to 5.3
$ /web/php52/bin/apachectl stop $ /web/php53/bin/apachectl start
I have some (old) build scripts available that may or may not save you some pain if you’re compiling on linux (CentOS in particular, but you could make it work pretty easily on non-redhat distros, too)
All that does is change the folder that the PHP binaries will be installed to.
Changing it will change where you are installing it, so technically you could install multiple copies… but why would you do that? That would just make a headache for everything else (your webserver/cgi/cli)
Most of the time, the path is
/usr which would install the files in
/usr/local/bin and /usr/bin` respectively.
The good setting for you to use is
/usr/local. The distro packager should use
/usr and ISVs should use
This path is used as the base for the CLI executable (
$PREFIX/bin), the SAPI library, and the extensions.