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

标签 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

然而,这只是一个猜测。

最佳答案

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

基本上,您可以将 apache 和 php5.2 编译到某个地方,例如/web/php52(为 apache 和 php 提供 --prefix=/web/php52 以配置。然后执行相同的操作对于 apache/php53,前缀为/web/php53

您甚至可以采取一些技巧,例如在两个 apache 安装之间符号链接(symbolic link)各种配置以保持一致(所以唯一的区别是一个运行 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 发行版上很容易地工作)

关于php - PHP 配置选项 "--prefix=PREFIX"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2889744/

相关文章:

php - 学说中的实体多对多(symfony2)

angular - 即使我不保存更改,Visual Studio Code 也会继续编译

ASP.NET 部署 : How to avoid losing session state when updating code?

java - 我将如何在 mac 终端中编译这个在 Eclipse 中创建的 java 项目目录?

php - 调用未定义的方法 Gallery::newQuery() Laravel

php - ajax 发布但无法阻止刷新

javascript - php 不从联系表单发送电子邮件

javascript - 点击 "Place Order"时的对话框

c - 像 gcc 这样的 C 编译器是否足够智能,可以进行位移位?

C++编译文件