Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是PHP配置选项--前缀=前缀“;做_Php_Compilation - Fatal编程技术网

什么是PHP配置选项--前缀=前缀“;做

什么是PHP配置选项--前缀=前缀“;做,php,compilation,Php,Compilation,我听说在linux上编译PHP时设置--prefix=prefix选项将允许您一次安装多个PHP而不会发生冲突。(我认为如果没有设置,默认值是/usr/local)。然而,我不确定它到底是做什么的,或者使用什么好的设置。此外,我还听说将其设置为默认值以外的值可能会使一些PHP扩展更难安装 ./configure --prefix=PREFIX ... 我刚刚意识到,其他一些选项,如--exec prefix可能仍然需要设置为/usr/local,因为它们默认为--prefix的值。如果将pre

我听说在linux上编译PHP时设置
--prefix=prefix
选项将允许您一次安装多个PHP而不会发生冲突。(我认为如果没有设置,默认值是
/usr/local
)。然而,我不确定它到底是做什么的,或者使用什么好的设置。此外,我还听说将其设置为默认值以外的值可能会使一些PHP扩展更难安装

./configure --prefix=PREFIX ...
我刚刚意识到,其他一些选项,如
--exec prefix
可能仍然需要设置为
/usr/local
,因为它们默认为
--prefix
的值。如果将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

不过,这只是一个猜测。

所做的只是更改将安装PHP二进制文件的文件夹

更改它将更改您安装它的位置,因此从技术上讲,您可以安装多个副本。。。但你为什么要这么做?这只会让其他一切(您的Web服务器/cgi/cli)头疼

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

适合您使用的设置是
/usr/local
。发行版包装商应使用
/usr
,ISV应使用
/opt/


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

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

基本上,您可以将apache和php5.2编译到像/web/php52这样的地方(给定--prefix=/web/php52 to
configure
,用于apache和php。然后使用像/web/php53这样的前缀对apache/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

如果您在linux上编译,我提供了一些(旧的)可能会或可能不会为您节省一些痛苦(尤其是CentOS,但您也可以使它在非redhat发行版上非常容易地工作)

我需要能够在PHP5.2和PHP5.3之间来回切换以进行测试。@Xeoncross-我认为,但您很可能会导致更多问题,这将迫使您花时间思考代码是否有问题,或者是否与5.2/5.3切换有关。为什么不使用两个不同的PHP1运行VM或其他东西呢nstallations?是的,VM是一个选项-但我希望在linux上像在windows中一样多次安装PHP会很容易。太棒了,这样我就可以将不同的PHP版本编译到seporate文件夹中。这就是我想做的。如果我设置
前缀,PHP核心的任何部分都可能安装在文件夹之外吗=/web/php52
?换句话说,如果我不再需要该版本,我希望能够删除
/web/php52
文件夹,而不必担心文件系统其他部分中的遗留文件。顺便说一句,我将使用nginx而不是apache,所以我可能只需要在启动它时手动更改fastcgi PHP路径的位置。PHP不会将任何内容放在它的prefix dir之外,除非您使用其他参数来配置它。无论您设置了什么目录,都会彻底清理。RE:您的更新--不要这样做。设置--exec prefix等,都会导致东西从您的小沙盒中泄漏出来。只有我们e--prefix.如果我只想设置php来开发扩展,而不需要成为sudoer呢?我需要--exec前缀还是不需要