Meu nome é phpenv. Fui projetado para humanos, para ajudar a simplificar o gerenciamento de múltiplas instalações de construção personalizada de PHP.
Fui originalmente inspirado pelo excelente trabalho de ambos os projetos que você já conhece e adora, com um monte de adições centradas em PHP para ajudá-lo a construir seu primeiro lançamento, simplificar o gerenciamento e o trabalho com lançamentos diferentes e mantê-lo construindo novo lançamento após novo lançamento. como se não houvesse nada nisso.
Você é um desenvolvedor PHP, como nós, e não apenas precisa ter o intérprete mais recente e atualizado para rodar seus scripts, mas também se preocupa em ver como eles são tratados quando submetidos a interpretações mais antigas. Já se perguntou por que você não pode executar um aplicativo PHP em sua própria máquina de desenvolvimento? Bem, você acabou de encontrar a resposta quando foi dar uma volta construindo PHP em suas máquinas de desenvolvimento. Personalize facilmente suas opções de configuração e até mesmo crie extensões pecl em PHP ou manualmente posteriormente. Configure e instale compilações personalizadas da mesma versão do PHP diretamente do repositório de código-fonte do PHP mantido em sua pasta .phpenv
local.
phpenv opera no diretório por usuário ~/.phpenv
. Os nomes das versões no phpenv correspondem aos subdiretórios de ~/.phpenv/versions
. Por exemplo, você pode ter ~/.phpenv/versions/5.3.8
e ~/.phpenv/versions/5.4.0
.
Cada versão é uma árvore de trabalho com seus próprios binários, como ~/.phpenv/versions/5.4.0/bin/php
e ~/.phpenv/versions/5.3.8/bin/pyrus
. phpenv cria binários shim para cada binário em todas as versões instaladas do PHP.
Esses shims são scripts wrapper simples que residem em ~/.phpenv/shims
e detectam qual versão do PHP você deseja usar. Eles inserem o diretório da versão selecionada no início do seu $PATH
e então executam o binário correspondente.
Devido à simplicidade da abordagem do shim, tudo que você precisa para usar o phpenv é ~/.phpenv/shims
no seu $PATH
que fará a troca de versão automaticamente.
Para uma instalação mais automatizada, você pode usar o phpenv-installer. Se você preferir uma abordagem manual, siga as etapas abaixo.
Isso o ajudará a usar a versão mais recente do phpenv e facilitará o fork e a contribuição de quaisquer alterações no upstream.
Confira o phpenv em ~/.phpenv
.
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
Adicione ~/.phpenv/bin
ao seu $PATH
para acessar o utilitário de linha de comando phpenv
.
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
Adicione phpenv init ao seu shell para ativar correções e preenchimento automático.
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
Reinicie seu shell para que as alterações de caminho tenham efeito. Agora você pode começar a usar o phpenv.
$ exec $SHELL -l
(Opcional) Instale o php-build nele e em qualquer arquivo php. (Veja a página inicial do php-build)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(Opcional) Reconstrua os binários de correção. Você deve fazer isso sempre que instalar um novo binário PHP.
$ phpenv rehash
Se você instalou o phpenv usando as instruções acima, você pode atualizar sua instalação a qualquer momento usando o git.
Para atualizar para a versão de desenvolvimento mais recente do phpenv, use git pull
:
$ cd ~/.phpenv
$ git pull
Por padrão, o php-build irá compilar o PHP com um conjunto padrão de opções especificado por:
Normalmente, se você precisar especificar como o PHP é construído em seu sistema, você pode adicionar opções de configuração na variável PHP_BUILD_CONFIGURE_OPTS
e adicionar extensões PHP na variável PHP_BUILD_INSTALL_EXTENSION
.
A maneira preferida de conectar aplicativos PHPenv é usando php-fpm após construir o php. Seu servidor web pode então ser configurado para se conectar à instância php-fpm. Nesta abordagem, o php será executado com as permissões do usuário invocador, o que não é necessariamente como o servidor web.
php-fpm pode ser iniciado de uma das seguintes maneiras:
~/.phpenv/versions/$VERSION/etc/init.d/php-fpm
~/.phpenv/versions/$VERSION/etc/systemd/system/php-fpm.service
php-fpm (8)
e fornecendo argumentos de linha de comando Por padrão, o php-fpm vem com um arquivo de configuração em ~/.phpenv/versions/$VERSION/etc/php-fpm.conf
, que ele procurará quando for executado. Isso configura o php-fpm para escutar localhost:9000
quando iniciado. Você pode editar ou substituir este arquivo ou fornecer um arquivo de configuração diferente usando o argumento de linha de comando --fpm-config
( -y
).
Instruções para conectar diferentes servidores web ao php-fpm:
Alternativamente, você ainda pode usar o módulo Apache php configurando php-build para construir a extensão libphp.so apache (instruções a seguir). libphp.so pode então ser encontrado pelo apache na pasta ~/.phpenv/versions/$VERSION/libexec
. Este arquivo pode ser usado para a diretiva LoadModule php5_module
do Apache e requer que o Apache seja reiniciado quando alterado.
Pule esta seção, a menos que você precise saber o que cada linha do seu perfil de shell está fazendo.
phpenv init
é o único comando que ultrapassa a linha de carregamento de comandos extras em seu shell. Aqui está o que phpenv init
realmente faz:
Configura o caminho dos calços. Este é o único requisito para que o phpenv funcione corretamente. Você também pode fazer isso manualmente, acrescentando ~/.phpenv/shims
ao seu $PATH
.
Instala o preenchimento automático. Isso é totalmente opcional, mas muito útil. Sourcing ~/.phpenv/completions/phpenv.bash
configurará isso. Há também um ~/.phpenv/completions/phpenv.zsh
para usuários do Zsh.
Refaz os calços. De tempos em tempos você precisará reconstruir seus arquivos de correção. Fazer isso no init garante que tudo esteja atualizado. Você sempre pode executar phpenv rehash
manualmente.
Instala o despachante sh. Este bit também é opcional, mas permite que o phpenv e plugins alterem variáveis em seu shell atual, tornando possíveis comandos como phpenv shell
. O despachante sh não faz nada maluco como substituir cd
ou hackear o prompt do shell, mas se por algum motivo você precisar que phpenv
seja um script real em vez de uma função do shell, você pode ignorá-lo com segurança.
Execute phpenv init -
você mesmo pode ver exatamente o que acontece nos bastidores.
Assim como git
, o comando phpenv
delega subcomandos com base em seu primeiro argumento. Os subcomandos mais comuns são:
Mostre o uso e ajuda útil. Quando você estiver com problemas, faça isso ;)
$ phpenv help
$ phpenv help <subcommand>
php-build é um plugin compatível com phpenv que cria e instala php. Para poder usar a instalação do phpenv, baixe e instale o plugin php-build conforme descrito na etapa 5 das instruções de instalação acima.
Antes de executar a instalação do phpenv, certifique-se de que as versões de desenvolvimento necessárias para construir o php estejam instaladas em seu sistema. Em particular, se você deseja construir a extensão do Apache, certifique-se de que o Apache2-dev (ou equivalente do seu sistema operacional) esteja instalado.
Define a versão global do PHP a ser usada em todos os shells, escrevendo o nome da versão no arquivo ~/.phpenv/version
. Esta versão pode ser substituída por um arquivo .phpenv-version
por projeto ou pela configuração da variável de ambiente PHPENV_VERSION
.
$ phpenv global 5.4.0
O system
de nome de versão especial diz ao phpenv para usar o sistema PHP (detectado pesquisando seu $PATH
).
Quando executado sem um número de versão, phpenv global
reporta a versão global atualmente configurada.
Define uma versão PHP local por projeto gravando o nome da versão em um arquivo .phpenv-version
no diretório atual. Esta versão substitui a global e pode ser substituída definindo a variável de ambiente PHPENV_VERSION
ou com o comando phpenv shell
.
$ phpenv local 5.3.8
Quando executado sem um número de versão, phpenv local
reporta a versão local atualmente configurada. Você também pode cancelar a configuração da versão local:
$ phpenv local --unset
Define uma versão PHP específica do shell definindo a variável de ambiente PHPENV_VERSION
em seu shell. Esta versão substitui as versões específicas do projeto e a versão global.
$ phpenv shell 5.3.9
Quando executado sem um número de versão, phpenv shell
informa o valor atual de PHPENV_VERSION
. Você também pode desativar a versão do shell:
$ phpenv shell --unset
Observe que você precisará da integração do shell do phpenv habilitada (etapa 3 das instruções de instalação) para usar este comando. Se preferir não usar a integração com shell, você pode simplesmente definir a variável PHPENV_VERSION
você mesmo:
$ export PHPENV_VERSION=5.3.13
Lista todas as versões do PHP conhecidas pelo phpenv e mostra um asterisco próximo à versão atualmente ativa.
$ phpenv versions
5.2.8
5.3.13
* 5.4.0 (set by /YOUR-USERNAME/.phpenv/global)
Exibe a versão do PHP atualmente ativa, juntamente com informações sobre como ela foi configurada.
$ phpenv version
5.4.0 (set by /YOUR-USERNAME/.phpenv/version)
Instala shims para todos os binários PHP conhecidos pelo phpenv (ou seja, ~/.phpenv/versions/*/bin/*
). Execute este comando depois de instalar uma nova versão do PHP.
$ phpenv rehash
Exibe o caminho completo para o binário que o phpenv executará quando você executar o comando fornecido.
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
O código-fonte do phpenv está hospedado no GitHub. É limpo, modular e fácil de entender (graças ao projeto rbenv), mesmo se você não for um hacker de shell.
Este projeto é basicamente um clone (Leia-se: "pesquisar e substituir") do projeto rbenv. Está precisando de amor e apoio. Se você estiver interessado em melhorá-lo, sinta-se à vontade para fazer um fork, enviar solicitações pull e registrar bugs no rastreador de problemas.
(A licença do MIT)
Direitos autorais (c) 2012 Dominic Giglio
Direitos autorais (c) 2013 Nick Lombard
Copyright (c) 2015 madumlao
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar , publicar, distribuir, sublicenciar e/ou vender cópias do Software e permitir que as pessoas a quem o Software seja fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão serão incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM HIPÓTESE ALGUMA OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.