PHP配置选项“--prefix = PREFIX”有什么作用?

时间:2010-05-22 21:00:22

标签: php compilation

我听说在linux上编译PHP时设置--prefix=PREFIX选项可以让你一次安装多个PHP而不会发生冲突。 (我认为默认情况下,如果未设置,则为/usr/local )。但是,我不确定它究竟是做什么的,或者使用的好设置是什么。此外,我还听说将其设置为默认值以外的其他内容可能会使某些PHP扩展更难安装。

./configure --prefix=PREFIX ...

我刚刚意识到其他一些选项(例如--exec-prefix)可能仍需要设置为/usr/local,因为它们默认为--prefix的值。如果将前缀设置为web/phpalt之类的东西会导致问题,因为--sbindir之类的东西设置为``--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

根据PHP的说法,您似乎可以设置以下选项而不会产生任何副作用。

./configure --prefix=/custom/path --exec-prefix=/usr/local

然而,这只是猜测。

3 个答案:

答案 0 :(得分:4)

如果要在5.2和5.3之间切换,最好将源代码中的Apache和PHP编译成特殊目录。

基本上,你可以将apache和php5.2编译到某个地方,比如/ web / php52(给apache和php提供--prefix = / web / php52到configure。然后为apache /做同样的事情php53的前缀如/ web / php53

你甚至可能会变得棘手并且在两个apache安装之间执行诸如符号链接各种配置之类的事情以保持一致(因此区别在于一个运行5.3而另一个运行5.2)

然后当你想启动5.2服务器时,你只需说:

$ /web/php52/bin/apachectl start

然后切换到5.3

$ /web/php52/bin/apachectl stop
$ /web/php53/bin/apachectl start

我有一些(旧)build scripts可用,如果你在Linux上编译,可能会或可能不会给你带来一些痛苦(特别是CentOS,但你可以很容易地在非redhat发行版上工作,太)

答案 1 :(得分:3)

所有这一切都是更改将安装PHP二进制文件的文件夹。

更改它会改变您安装它的位置,所以从技术上讲,您可以安装多个副本......但为什么要这样做呢?这会让其他一切(你的webserver / cgi / cli)令人头疼

大多数情况下,路径为/usr/local/usr,分别会在/usr/local/bin和/ usr / bin`中安装文件。

答案 2 :(得分:2)

使用的好设置是/usr/local。发行版打包程序应使用/usr,ISV应使用/opt/<appname>

此路径用作CLI可执行文件($PREFIX/bin),SAPI库和扩展的基础。