我的名字是 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 二进制文件。
这些垫片是简单的包装脚本,位于~/.phpenv/shims
中并检测您要使用的 PHP 版本。他们将所选版本的目录插入$PATH
的开头,然后执行相应的二进制文件。
由于 shim 方法很简单,您只需使用$PATH
中的~/.phpenv/shims
即可,它会自动进行版本切换。
对于更自动化的安装,您可以使用 phpenv-installer。如果您更喜欢手动方法,请按照以下步骤操作。
这将使您能够使用最新版本的 phpenv,并轻松分叉并向上游贡献任何更改。
将 phpenv 签入~/.phpenv
。
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
将~/.phpenv/bin
添加到$PATH
以访问phpenv
命令行实用程序。
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
将 phpenv init 添加到您的 shell 以启用填充程序和自动完成功能。
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
重新启动 shell 以使路径更改生效。您现在可以开始使用 phpenv。
$ exec $SHELL -l
(可选)将 php-build 安装到其中以及任何 php.ini 文件中。 (参见 php-build 主页)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(可选)重建 shim 二进制文件。每次安装新的 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将以调用用户的权限运行,而不必以Web服务器的身份运行。
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
下附带一个配置文件,运行时它将查找该文件。这将 php-fpm 配置为在启动时监听localhost:9000
。您可以编辑或替换此文件,或者使用--fpm-config
( -y
) 命令行参数提供不同的配置文件。
将不同网络服务器连接到 php-fpm 的说明:
或者,您仍然可以通过配置 php-build 来构建 libphp.so apache 扩展来使用 Apache php 模块(遵循说明)。然后 apache 可以在~/.phpenv/versions/$VERSION/libexec
文件夹下找到 libphp.so。该文件可用于 Apache 的LoadModule php5_module
指令,并要求 Apache 在更改时重新启动。
除非您必须知道 shell 配置文件中的每一行都在做什么,否则请跳过本节。
phpenv init
是唯一一个跨越将额外命令加载到 shell 的命令。这是phpenv init
实际执行的操作:
设置您的垫片路径。这是 phpenv 正常运行的唯一要求。您也可以通过将~/.phpenv/shims
添加到$PATH
来手动执行此操作。
安装自动完成功能。这完全是可选的,但非常有用。采购~/.phpenv/completions/phpenv.bash
将进行设置。还有一个供 Zsh 用户使用的~/.phpenv/completions/phpenv.zsh
。
重新调整垫片。有时您需要重建 shim 文件。在 init 上执行此操作可确保一切都是最新的。您始终可以手动运行phpenv rehash
。
安装 sh 调度程序。该位也是可选的,但允许 phpenv 和插件更改当前 shell 中的变量,从而使phpenv shell
等命令成为可能。 sh 调度程序不会做任何疯狂的事情,例如覆盖cd
或破解您的 shell 提示符,但如果由于某种原因您需要phpenv
成为一个真正的脚本而不是 shell 函数,您可以安全地跳过它。
运行phpenv init -
让你自己看看到底发生了什么。
与git
一样, phpenv
命令根据其第一个参数委托给子命令。最常见的子命令是:
显示用法和有用的帮助。当你遇到麻烦的时候,就这样做吧;)
$ phpenv help
$ phpenv help <subcommand>
php-build 是一个与 phpenv 兼容的插件,用于构建和安装 php。为了能够使用 phpenv install,请按照上述安装说明的步骤 5. 中所述下载并安装 php-build 插件。
在运行 phpenv install 之前,请确保构建 php 所需的开发版本已安装在您的系统中。特别是,如果您想构建 apache 扩展,请确保安装了 apache2-dev (或您的操作系统的等效项)。
通过将版本名称写入~/.phpenv/version
文件来设置要在所有 shell 中使用的 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
通过在 shell 中设置PHPENV_VERSION
环境变量来设置特定于 shell 的 PHP 版本。此版本覆盖项目特定版本和全局版本。
$ phpenv shell 5.3.9
当没有版本号运行时, phpenv shell
会报告PHPENV_VERSION
的当前值。您还可以取消设置 shell 版本:
$ phpenv shell --unset
请注意,您需要启用 phpenv 的 shell 集成(安装说明的步骤 3)才能使用此命令。如果您不想使用 shell 集成,您可以简单地自己设置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/*
)。安装新版本的 PHP 后运行此命令。
$ phpenv rehash
显示运行给定命令时 phpenv 将执行的二进制文件的完整路径。
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
phpenv 源代码托管在 GitHub 上。即使您不是 shell 黑客,它也是干净、模块化且易于理解的(感谢 rbenv 项目)。
该项目基本上是 rbenv 项目的克隆(阅读:“搜索和替换”)。它需要爱和支持。如果您有兴趣改进它,请随时分叉、提交拉取请求并在问题跟踪器上提交错误。
(麻省理工学院许可证)
版权所有 (c) 2012 多米尼克·吉利奥
版权所有 (c) 2013 尼克·隆巴德
版权所有 (c) 2015 madumlao
特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地使用本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售软件的副本,并允许向其提供软件的人员这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有者均不对因本软件或本软件中的使用或其他交易而产生或与之相关的任何索赔、损害或其他责任负责,无论是合同、侵权行为还是其他行为。软件。