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

Xeo*_*oss 6 php compilation

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

./configure --prefix=PREFIX ...
Run Code Online (Sandbox Code Playgroud)

我刚刚意识到其他一些选项--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
Run Code Online (Sandbox Code Playgroud)

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

./configure --prefix=/custom/path --exec-prefix=/usr/local
Run Code Online (Sandbox Code Playgroud)

但是,这只是猜测.

tim*_*dev 6

如果您想在 5.2 和 5.3 之间切换,最好将 Apache 和 PHP 从源代码编译到特殊目录中。

基本上,您可以将 apache 和 php5.2 编译到 /web/php52 之类的地方(将 --prefix=/web/php52configure用于 apache 和 php。然后对 apache/php53 执行相同操作,前缀为 /web/ php53

您甚至可能会变得棘手,并在两个 apache 安装之间进行符号链接各种配置以保持一致(因此唯一的区别是一个运行 5.3,另一个运行 5.2)

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

$ /web/php52/bin/apachectl start
Run Code Online (Sandbox Code Playgroud)

然后切换到5.3

$ /web/php52/bin/apachectl stop
$ /web/php53/bin/apachectl start
Run Code Online (Sandbox Code Playgroud)

我有一些(旧的)构建脚本可用,如果您在 linux 上编译,它们可能会或可能不会为您节省一些痛苦(特别是 CentOS,但您也可以让它在非红帽发行版上很容易地工作)