내 이름은 phpenv입니다. 저는 여러 PHP 사용자 정의 빌드 설치 관리를 단순화하기 위해 인간을 위해 설계되었습니다.
나는 원래 첫 번째 릴리스를 구축하고, 다른 릴리스를 사용하여 관리 및 작업을 단순화하고, 새 릴리스 이후에도 새 릴리스를 계속 빌드하는 데 도움이 되는 PHP 중심 추가 기능을 통해 이미 알고 있고 좋아하는 두 프로젝트의 뛰어난 작업에서 영감을 받았습니다. 아무 일도 없는 것처럼.
당신은 우리와 마찬가지로 PHP 개발자입니다. 스크립트를 실행하려면 최신 통역사가 있어야 할 뿐만 아니라 이전 해석을 제출할 때 어떻게 처리되는지 확인해야 합니다. 자신의 개발 컴퓨터에서 PHP 앱을 실행할 수 없는 이유가 궁금하신가요? 글쎄, 당신은 그들의 개발 머신에서 PHP를 구축하는 과정에서 답을 찾았습니다. 구성 옵션을 쉽게 사용자 정의하고 Pecl 확장을 PHP로 빌드하거나 나중에 수동으로 빌드할 수도 있습니다. 로컬 .phpenv
폴더에 보관된 PHP 소스 코드 저장소에서 직접 동일한 PHP 릴리스 버전의 사용자 정의 빌드를 구성하고 설치합니다.
phpenv는 사용자별 디렉토리 ~/.phpenv
에서 작동합니다. phpenv의 버전 이름은 ~/.phpenv/versions
의 하위 디렉터리에 해당합니다. 예를 들어 ~/.phpenv/versions/5.3.8
및 ~/.phpenv/versions/5.4.0
이 있을 수 있습니다.
각 버전은 ~/.phpenv/versions/5.4.0/bin/php
및 ~/.phpenv/versions/5.3.8/bin/pyrus
와 같은 자체 바이너리가 있는 작업 트리입니다. phpenv는 설치된 모든 PHP 버전에서 이러한 모든 바이너리에 대해 shim 바이너리를 만듭니다.
이 shim은 ~/.phpenv/shims
에 있고 사용하려는 PHP 버전을 감지하는 간단한 래퍼 스크립트입니다. $PATH
시작 부분에 선택한 버전의 디렉터리를 삽입한 다음 해당 바이너리를 실행합니다.
shim 접근 방식의 단순성으로 인해 phpenv를 사용하는 데 필요한 것은 $PATH
에 ~/.phpenv/shims
만 있으면 버전이 자동으로 전환됩니다.
보다 자동화된 설치를 위해 phpenv-installer를 사용할 수 있습니다. 수동 접근 방식을 선호하는 경우 아래 단계를 따르세요.
이렇게 하면 최신 버전의 phpenv를 사용할 수 있으며 변경 사항을 업스트림으로 쉽게 포크하고 기여할 수 있습니다.
~/.phpenv
에서 phpenv를 확인하세요.
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
phpenv
명령줄 유틸리티에 액세스하려면 $PATH
에 ~/.phpenv/bin
추가하세요.
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
shim 및 자동 완성을 활성화하려면 셸에 phpenv init를 추가하세요.
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
경로 변경 사항이 적용되도록 셸을 다시 시작합니다. 이제 phpenv를 사용할 수 있습니다.
$ exec $SHELL -l
(선택 사항) php-build를 해당 php와 함께 설치합니다. (php-build 홈 참조)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(선택 사항) 심 바이너리를 다시 빌드합니다. 새로운 PHP 바이너리를 설치할 때마다 이 작업을 수행해야 합니다.
$ phpenv rehash
위 지침에 따라 phpenv를 설치한 경우 언제든지 git을 사용하여 설치를 업그레이드할 수 있습니다.
phpenv의 최신 개발 버전으로 업그레이드하려면 git pull
사용하세요.
$ cd ~/.phpenv
$ git pull
기본적으로 php-build는 다음과 같이 지정된 기본 옵션 세트를 사용하여 PHP를 컴파일합니다.
일반적으로 시스템에서 PHP가 구축되는 방식을 지정해야 하는 경우 PHP_BUILD_CONFIGURE_OPTS
변수에 구성 옵션을 추가하고 PHP_BUILD_INSTALL_EXTENSION
변수에 PHP 확장을 추가할 수 있습니다.
phpenv 애플리케이션을 연결하는 가장 좋은 방법은 php를 빌드한 후 php-fpm을 사용하는 것입니다. 그런 다음 php-fpm 인스턴스에 연결하도록 웹 서버를 구성할 수 있습니다. 이 접근 방식에서 PHP는 호출하는 사용자의 권한으로 실행되지만 반드시 웹 서버로 실행될 필요는 없습니다.
php-fpm은 다음 방법 중 하나로 시작할 수 있습니다:
~/.phpenv/versions/$VERSION/etc/init.d/php-fpm
실행~/.phpenv/versions/$VERSION/etc/systemd/system/php-fpm.service
설치php-fpm (8)
실행하고 명령줄 인수를 제공하여 기본적으로 php-fpm은 ~/.phpenv/versions/$VERSION/etc/php-fpm.conf
아래에 구성 파일이 제공되며, 실행 시 이를 찾습니다. 이는 시작 시 localhost:9000
수신하도록 php-fpm을 구성합니다. --fpm-config
( -y
) 명령줄 인수를 사용하여 이 파일을 편집 또는 교체하거나 다른 구성 파일을 제공할 수 있습니다.
다양한 웹서버를 php-fpm에 연결하는 방법:
또는 libphp.so Apache 확장을 빌드하도록 php-build를 구성하여 Apache php 모듈을 계속 사용할 수도 있습니다(다음 지침 참조). libphp.so는 apache의 ~/.phpenv/versions/$VERSION/libexec
폴더에서 찾을 수 있습니다. 이 파일은 Apache의 LoadModule php5_module
지시문에 사용될 수 있으며 변경 시 Apache를 다시 시작해야 합니다.
쉘 프로필의 모든 행이 수행하는 작업을 알아야 하는 경우가 아니면 이 섹션을 건너뛰십시오.
phpenv init
는 추가 명령을 쉘에 로드하는 라인을 넘는 유일한 명령입니다. phpenv init
실제로 수행하는 작업은 다음과 같습니다.
심 경로를 설정합니다. 이는 phpenv가 제대로 작동하기 위한 유일한 요구 사항입니다. $PATH
앞에 ~/.phpenv/shims
추가하여 직접 이 작업을 수행할 수도 있습니다.
자동 완성을 설치합니다. 이것은 완전히 선택 사항이지만 꽤 유용합니다. 소싱 ~/.phpenv/completions/phpenv.bash
이를 설정합니다. Zsh 사용자를 위한 ~/.phpenv/completions/phpenv.zsh
도 있습니다.
심을 다시 해시합니다. 때때로 shim 파일을 다시 작성해야 합니다. init에서 이 작업을 수행하면 모든 것이 최신 상태인지 확인할 수 있습니다. 언제든지 phpenv rehash
수동으로 실행할 수 있습니다.
sh 디스패처를 설치합니다. 이 비트도 선택 사항이지만 phpenv 및 플러그인이 현재 셸의 변수를 변경하여 phpenv shell
같은 명령을 가능하게 할 수 있습니다. sh 디스패처는 cd
무시하거나 쉘 프롬프트를 해킹하는 것과 같은 이상한 작업을 수행하지 않지만 어떤 이유로 쉘 함수가 아닌 실제 스크립트로 phpenv
필요한 경우 안전하게 건너뛸 수 있습니다.
phpenv init -
실행하여 내부적으로 무슨 일이 일어나는지 직접 확인해 보세요.
git
과 마찬가지로 phpenv
명령은 첫 번째 인수를 기반으로 하위 명령에 위임합니다. 가장 일반적인 하위 명령은 다음과 같습니다.
사용법과 유용한 도움말을 표시합니다. 어려울 땐 이렇게 하세요 ;)
$ phpenv help
$ phpenv help <subcommand>
php-build는 php를 빌드하고 설치하는 phpenv 호환 플러그인입니다. phpenv 설치를 사용하려면 위 설치 지침의 5단계에 설명된 대로 php-build 플러그인을 다운로드하여 설치하세요.
phpenv 설치를 실행하기 전에 PHP를 빌드하는 데 필요한 개발 버전이 시스템에 설치되어 있는지 확인하십시오. 특히, Apache 확장을 빌드하려면 apache2-dev(또는 이에 상응하는 OS)가 설치되어 있는지 확인하세요.
~/.phpenv/version
파일에 버전 이름을 작성하여 모든 쉘에서 사용할 PHP의 글로벌 버전을 설정합니다. 이 버전은 프로젝트별 .phpenv-version
파일을 사용하거나 PHPENV_VERSION
환경 변수를 설정하여 재정의할 수 있습니다.
$ phpenv global 5.4.0
특수 버전 이름 system
phpenv에게 시스템 PHP를 사용하도록 지시합니다( $PATH
검색으로 감지됨).
버전 번호 없이 실행하면 phpenv global
현재 구성된 글로벌 버전을 보고합니다.
현재 디렉터리의 .phpenv-version
파일에 버전 이름을 작성하여 로컬 프로젝트별 PHP 버전을 설정합니다. 이 버전은 전역 버전을 재정의하며 PHPENV_VERSION
환경 변수를 설정하거나 phpenv shell
명령을 사용하여 자체적으로 재정의할 수 있습니다.
$ phpenv local 5.3.8
버전 번호 없이 실행하면 phpenv local
현재 구성된 로컬 버전을 보고합니다. 로컬 버전을 설정 해제할 수도 있습니다.
$ phpenv local --unset
셸에서 PHPENV_VERSION
환경 변수를 설정하여 셸별 PHP 버전을 설정합니다. 이 버전은 프로젝트별 버전과 글로벌 버전을 모두 재정의합니다.
$ phpenv shell 5.3.9
버전 번호 없이 실행하면 phpenv shell
PHPENV_VERSION
의 현재 값을 보고합니다. 셸 버전을 설정 해제할 수도 있습니다.
$ phpenv shell --unset
이 명령을 사용하려면 phpenv의 쉘 통합을 활성화해야 합니다(설치 지침의 3단계). 쉘 통합을 사용하지 않으려면 PHPENV_VERSION
변수를 직접 설정하면 됩니다.
$ export PHPENV_VERSION=5.3.13
phpenv에 알려진 모든 PHP 버전을 나열하고 현재 활성 버전 옆에 별표를 표시합니다.
$ phpenv versions
5.2.8
5.3.13
* 5.4.0 (set by /YOUR-USERNAME/.phpenv/global)
현재 활성 PHP 버전을 설정 방법에 대한 정보와 함께 표시합니다.
$ phpenv version
5.4.0 (set by /YOUR-USERNAME/.phpenv/version)
phpenv에 알려진 모든 PHP 바이너리(예: ~/.phpenv/versions/*/bin/*
)에 대한 shim을 설치합니다. 새 버전의 PHP를 설치한 후 이 명령을 실행하세요.
$ phpenv rehash
주어진 명령을 실행할 때 phpenv가 실행할 바이너리의 전체 경로를 표시합니다.
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
phpenv 소스 코드는 GitHub에서 호스팅됩니다. 쉘 해커가 아니더라도 깔끔하고 모듈식이며 이해하기 쉽습니다(rbenv 프로젝트 덕분에).
이 프로젝트는 기본적으로 rbenv 프로젝트의 복제본(읽기: "검색 및 바꾸기")입니다. 사랑과 지원이 필요한 상황입니다. 개선에 관심이 있으시면 언제든지 포크하여 풀 요청을 제출하고 이슈 트래커에 버그를 제출해 주세요.
(MIT 라이센스)
저작권 (c) 2012 Dominic Giglio
저작권 (c) 2013 Nick Lombard
Copyright (c) 2015 마둠라오
본 소프트웨어 및 관련 문서 파일("소프트웨어")의 사본을 취득한 모든 사람에게 사용, 복사, 수정, 병합에 대한 권리를 포함하되 이에 국한되지 않고 제한 없이 소프트웨어를 취급할 수 있는 권한이 무료로 부여됩니다. , 소프트웨어 사본을 게시, 배포, 재라이센스 부여 및/또는 판매하고, 소프트웨어를 제공받은 사람에게 다음 조건에 따라 그렇게 하도록 허용합니다.
위의 저작권 고지와 본 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함됩니다.
소프트웨어는 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 어떠한 종류의 보증 없이 "있는 그대로" 제공됩니다. 어떠한 경우에도 작성자나 저작권 보유자는 계약, 불법 행위 또는 기타 행위로 인해 소프트웨어나 사용 또는 기타 거래와 관련하여 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다. 소프트웨어.