Mi nombre es phpenv. Fui diseñado para humanos, para ayudar a simplificar la administración de múltiples instalaciones de compilación personalizada de PHP.
Originalmente me inspiré en el excelente trabajo de ambos proyectos que ya conoces y amas con un montón de adiciones centradas en PHP para ayudarte a crear tu primera versión, simplificar la administración y el trabajo con diferentes versiones y seguir creando una nueva versión tras otra. como si no tuviera nada que ver.
Usted es un desarrollador de PHP, como lo somos nosotros, y no solo debe tener el intérprete más reciente y actualizado para ejecutar sus scripts, sino que también debe preocuparse por ver cómo se tratan cuando se someten a interpretaciones más antiguas. ¿Alguna vez te has preguntado por qué no puedes ejecutar una aplicación PHP en tu propia máquina de desarrollo? Bueno, acabas de encontrar la respuesta cuando te dieron un paseo construyendo PHP en sus máquinas de desarrollo. Personalice fácilmente sus opciones de configuración e incluso cree extensiones pecl en PHP o manualmente después. Configure e instale compilaciones personalizadas de la misma versión de lanzamiento de PHP directamente desde el repositorio de código fuente de PHP guardado en su carpeta .phpenv
local.
phpenv opera en el directorio por usuario ~/.phpenv
. Los nombres de las versiones en phpenv corresponden a subdirectorios de ~/.phpenv/versions
. Por ejemplo, podría tener ~/.phpenv/versions/5.3.8
y ~/.phpenv/versions/5.4.0
.
Cada versión es un árbol de trabajo con sus propios binarios, como ~/.phpenv/versions/5.4.0/bin/php
y ~/.phpenv/versions/5.3.8/bin/pyrus
. phpenv crea archivos binarios de corrección para cada uno de estos binarios en todas las versiones instaladas de PHP.
Estas correcciones son scripts contenedores simples que se encuentran en ~/.phpenv/shims
y detectan qué versión de PHP desea usar. Insertan el directorio de la versión seleccionada al comienzo de su $PATH
y luego ejecutan el binario correspondiente.
Debido a la simplicidad del enfoque shim, todo lo que necesita para usar phpenv es ~/.phpenv/shims
en su $PATH
, lo que hará que el cambio de versión cambie automáticamente.
Para una instalación más automatizada, puede utilizar phpenv-installer. Si prefiere un enfoque manual, siga los pasos a continuación.
Esto lo permitirá comenzar con la última versión de phpenv y facilitará la bifurcación y la contribución con cualquier cambio en sentido ascendente.
Consulte phpenv en ~/.phpenv
.
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
Agregue ~/.phpenv/bin
a su $PATH
para acceder a la utilidad de línea de comandos phpenv
.
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
Agregue phpenv init a su shell para habilitar las correcciones y el autocompletado.
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
Reinicie su shell para que los cambios de ruta surtan efecto. Ahora puedes comenzar a usar phpenv.
$ exec $SHELL -l
(Opcional) Instale php-build y cualquier archivo php. (Ver inicio de php-build)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(Opcional) Reconstruya los archivos binarios de corrección. Debes hacer esto cada vez que instales un nuevo binario PHP.
$ phpenv rehash
Si instaló phpenv siguiendo las instrucciones anteriores, puede actualizar su instalación en cualquier momento usando git.
Para actualizar a la última versión de desarrollo de phpenv, use git pull
:
$ cd ~/.phpenv
$ git pull
De forma predeterminada, php-build compilará PHP con un conjunto predeterminado de opciones especificadas por:
Normalmente, si necesita especificar cómo se construye PHP en su sistema, puede agregar opciones de configuración en la variable PHP_BUILD_CONFIGURE_OPTS
y agregar extensiones PHP en la variable PHP_BUILD_INSTALL_EXTENSION
.
La forma preferida de conectar aplicaciones phpenv es mediante php-fpm después de compilar php. Luego, su servidor web se puede configurar para conectarse a la instancia de php-fpm. En este enfoque, php se ejecutará con los permisos del usuario que lo invoca, que no es necesariamente el del servidor web.
php-fpm se puede iniciar de una de las siguientes maneras:
~/.phpenv/versions/$VERSION/etc/init.d/php-fpm
~/.phpenv/versions/$VERSION/etc/systemd/system/php-fpm.service
php-fpm (8)
y proporcionando argumentos de línea de comandos De forma predeterminada, php-fpm viene con un archivo de configuración en ~/.phpenv/versions/$VERSION/etc/php-fpm.conf
, que buscará cuando se ejecute. Esto configura php-fpm para escuchar en localhost:9000
cuando se inicia. Puede editar o reemplazar este archivo, o proporcionar un archivo de configuración diferente usando el argumento de línea de comando --fpm-config
( -y
).
Instrucciones para conectar diferentes servidores web a php-fpm:
Alternativamente, aún puede usar el módulo php de Apache configurando php-build para crear la extensión de Apache libphp.so (instrucciones a seguir). Apache puede encontrar libphp.so en la carpeta ~/.phpenv/versions/$VERSION/libexec
. Este archivo se puede utilizar para la directiva LoadModule php5_module
de Apache y requiere que Apache se reinicie cuando se modifique.
Omita esta sección a menos que necesite saber qué hace cada línea en su perfil de shell.
phpenv init
es el único comando que cruza la línea de cargar comandos adicionales en su shell. Esto es lo que realmente hace phpenv init
:
Configura el camino de las cuñas. Este es el único requisito para que phpenv funcione correctamente. También puedes hacer esto manualmente anteponiendo ~/.phpenv/shims
a tu $PATH
.
Instala el autocompletado. Esto es completamente opcional pero bastante útil. El abastecimiento ~/.phpenv/completions/phpenv.bash
lo configurará. También hay ~/.phpenv/completions/phpenv.zsh
para usuarios de Zsh.
Refritos calzas. De vez en cuando necesitarás reconstruir tus archivos de shim. Hacer esto en init asegura que todo esté actualizado. Siempre puedes ejecutar phpenv rehash
manualmente.
Instala el despachador sh. Este bit también es opcional, pero permite que phpenv y los complementos cambien las variables en su shell actual, haciendo posibles comandos como phpenv shell
. El despachador sh no hace nada loco como anular cd
o piratear el indicador de shell, pero si por alguna razón necesita que phpenv
sea un script real en lugar de una función de shell, puede omitirlo con seguridad.
Ejecute phpenv init -
para ver usted mismo exactamente qué sucede bajo el capó.
Al igual que git
, el comando phpenv
delega subcomandos según su primer argumento. Los subcomandos más comunes son:
Muestra el uso y ayuda útil. Cuando tengas problemas, haz esto ;)
$ phpenv help
$ phpenv help <subcommand>
php-build es un complemento compatible con phpenv que compila e instala php. Para poder utilizar phpenv install, descargue e instale el complemento php-build como se describe en el paso 5 de las instrucciones de instalación anteriores.
Antes de ejecutar la instalación de phpenv, asegúrese de que las versiones de desarrollo necesarias para compilar php estén instaladas en su sistema. En particular, si desea crear la extensión de Apache, asegúrese de que Apache2-dev (o el equivalente de su sistema operativo) esté instalado.
Establece la versión global de PHP que se utilizará en todos los shells escribiendo el nombre de la versión en el archivo ~/.phpenv/version
. Esta versión se puede anular mediante un archivo .phpenv-version
por proyecto o configurando la variable de entorno PHPENV_VERSION
.
$ phpenv global 5.4.0
El system
de nombres de versión especial le dice a phpenv que use el sistema PHP (detectado al buscar en $PATH
).
Cuando se ejecuta sin un número de versión, phpenv global
informa la versión global actualmente configurada.
Establece una versión PHP local por proyecto escribiendo el nombre de la versión en un archivo .phpenv-version
en el directorio actual. Esta versión anula la global y se puede anular a sí misma configurando la variable de entorno PHPENV_VERSION
o con el comando phpenv shell
.
$ phpenv local 5.3.8
Cuando se ejecuta sin un número de versión, phpenv local
informa la versión local actualmente configurada. También puedes desarmar la versión local:
$ phpenv local --unset
Establece una versión de PHP específica del shell configurando la variable de entorno PHPENV_VERSION
en su shell. Esta versión anula tanto las versiones específicas del proyecto como la versión global.
$ phpenv shell 5.3.9
Cuando se ejecuta sin un número de versión, phpenv shell
informa el valor actual de PHPENV_VERSION
. También puedes desarmar la versión del shell:
$ phpenv shell --unset
Tenga en cuenta que necesitará habilitar la integración del shell de phpenv (paso 3 de las instrucciones de instalación) para poder utilizar este comando. Si prefiere no utilizar la integración de shell, simplemente puede configurar la variable PHPENV_VERSION
usted mismo:
$ export PHPENV_VERSION=5.3.13
Enumera todas las versiones de PHP conocidas por phpenv y muestra un asterisco junto a la versión actualmente activa.
$ phpenv versions
5.2.8
5.3.13
* 5.4.0 (set by /YOUR-USERNAME/.phpenv/global)
Muestra la versión de PHP actualmente activa, junto con información sobre cómo se configuró.
$ phpenv version
5.4.0 (set by /YOUR-USERNAME/.phpenv/version)
Instala shims para todos los binarios de PHP conocidos por phpenv (es decir, ~/.phpenv/versions/*/bin/*
). Ejecute este comando después de instalar una nueva versión de PHP.
$ phpenv rehash
Muestra la ruta completa al binario que phpenv ejecutará cuando ejecute el comando dado.
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
El código fuente de phpenv está alojado en GitHub. Es limpio, modular y fácil de entender (gracias al proyecto rbenv), incluso si no eres un hacker de shell.
Este proyecto es básicamente un clon (Lea: "buscar y reemplazar") del proyecto rbenv. Necesita amor y apoyo. Si está interesado en mejorarlo, no dude en bifurcarlo, enviar solicitudes de extracción y registrar errores en el rastreador de problemas.
(La licencia MIT)
Copyright (c) 2012 Dominic Giglio
Copyright (c) 2013 Nick Lombard
Copyright (c) 2015 madumlao
Por el presente se otorga permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para operar con el Software sin restricciones, incluidos, entre otros, los derechos de uso, copia, modificación, fusión. , publicar, distribuir, sublicenciar y/o vender copias del Software, y permitir que las personas a quienes se les proporciona el Software lo hagan, sujeto a las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.