2010-05-22 5 views
6

리눅스에서 PHP를 컴파일 할 때 --prefix=PREFIX 옵션을 설정하면 충돌하지 않고 한 번에 두 개 이상의 PHP를 설치할 수 있다고 들었습니다. (이 설정되지 않은 경우 기본값은 /usr/local입니다.) 그러나, 나는 그것이 정확히 무엇인지 또는 사용하기 좋은 환경이 무엇인지에 대해 확신하지 못합니다. 또한 기본값 이외의 값으로 설정하면 PHP 확장을 설치하기가 어려워 질 수도 있다고 들었습니다.PHP 구성 옵션 "--prefix = PREFIX"는 무엇을합니까?

./configure --prefix=PREFIX ... 

난 그냥 몇 가지 다른 옵션과 같은 --exec-prefix 여전히 그들이 --prefix의 값으로 기본부터 /usr/local로 설정해야 할 수도 있음을 깨달았다. --sbindir 같은 것이``--exec-prefix +/sbin`로 설정되어 있기 때문에 접두어가 web/phpalt과 같이 설정되면 문제가 발생할 수 있습니다.

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 

그러나 이는 단지 추측에 불과합니다.

+0

RE : 귀하의 업데이트 - 그렇게하지 마십시오. --exec-prefix 등을 설정하면 사물이 작은 샌드 박스에서 새어 나오게됩니다. 그냥 --prefix를 사용하십시오. – timdev

+0

sudoer가 될 필요없이 확장 기능을 개발하기 위해 PHP를 설치하고 싶다면 어떻게해야합니까 ?? --exec-prefix가 필요합니까? 그렇지 않습니다. –

답변

4

5.2와 5.3 사이를 전환하려면 Apache와 PHP를 소스에서 특수 디렉토리로 컴파일하는 것이 좋습니다.

기본적으로 아파치와 php5.2를/web/php52와 같이 컴파일 할 수 있습니다 (apache와 php52에 --prefix =/web/php52를주고 configure에 apache/php53과 동일한 작업 수행)./웹 같은 접두사/php53

당신은 까다로운 얻을

(그래서 차이가 하나가 5.3 다른 5.2을 실행하는 것입니다) 일관된 일을 유지하기 위해 두 개의 아파치 설치간에 심볼릭 링크 다양한 CONFIGS 같은 일을 할 수

5.2 서버를 시작하려면 다음과 같이 말하십시오.

$ /web/php52/bin/apachectl start 

그리고 나서 5로 전환하십시오.

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

3 나는 가능한 일부 (구) build scripts이 그 수도 있고 당신이 리눅스에 컴파일 특히 (CentOS는하는 경우 당신에게 고통을 저장하지 않을 수 있습니다,하지만 당신은 비 레드햇 배포판에 아주 쉽게 작업 할 수 있습니다 , too)

+0

신난다. 그래서 다른 PHP 버전을 seporate 폴더로 컴파일 할 수있다. 그것이 내가하고 싶은 일입니다. 'prefix =/web/php52'를 설정하면 폴더 밖에 설치 될 PHP 코어 부분이 있습니까? 즉, 파일 시스템의 다른 부분에 파일을 남겨 두지 않고 그 버전을 더 이상 필요로하지 않으면'/ web/php52' 폴더를 지우고 싶습니다. BTW, 아파치가 아닌 nginx를 사용하고있을 것이므로 아마도 fastcgi PHP 경로의 위치를 ​​수동으로 변경할 것입니다. – Xeoncross

+1

PHP는'configure'에 다른 인수를 사용하여 특별히 그렇게하지 않는 한, 접두어 dir의 바깥에 아무것도 넣지 않습니다. Nuking은 당신이 설정 한 디렉토리를 완전히 정리합니다. – timdev

0

PHP 바이너리가 설치 될 폴더가 변경됩니다.

변경하면 설치 위치가 변경되므로 기술적으로 여러 사본을 설치할 수 있지만 그 이유는 무엇입니까? 그건 그냥 다른 모든 (웹 서버/CGI/CLI)

대부분의 시간

경로는 각각 /usr/local/bin하고는/usr/bin`에있는 파일을 설치합니다 /usr/local 또는 /usr입니다 대한 두통을 만들 것입니다.

+0

테스트를 위해 PHP 5.2와 PHP 5.3 사이를 전환 할 수 있어야합니다. – Xeoncross

+0

@Xeoncross - 나는 생각했다.하지만 더 많은 문제를 일으킬 가능성이 높아지고, 코드에 문제가 있는지 또는 5.2/5.3 전환과 관련이 있는지를 아이러니하게 강요하게된다. 왜 VM이나 다른 두 가지 PHP 설치로 무언가를 실행하지 않습니까? –

+0

예, VM은 옵션입니다.하지만 Windows에있는 것처럼 Linux에 PHP를 여러 번 설치하면 쉽습니다. – Xeoncross

2

에 대한 설정이이면 /usr/local입니다. 배포판 패키지 관리자는 /usr을 사용하고 ISV는 /opt/<appname>을 사용해야합니다.

이 경로는 CLI 실행 파일 ($PREFIX/bin), SAPI 라이브러리 및 확장에 대한 기본으로 사용됩니다.