PHP 的 RVM 等价物?

Posted

技术标签:

【中文标题】PHP 的 RVM 等价物?【英文标题】:RVM equivalent for PHP? 【发布时间】:2011-04-06 20:17:02 【问题描述】:

我似乎找不到快速切换 php 版本的方法。是否有与 php 的 ruby​​ 版本管理器等效的东西?我需要在 OS X 上在 5.3 和 5.2 之间切换。

【问题讨论】:

一个严肃的后续问题 - 我只是想安装 composer.. composer 是否管理 php 版本? @DevinGRhode - 不。您可以使用 composer 设置 PHP 版本的要求,但它无法管理它们。 【参考方案1】:

对于 RVM 和 rbenv 的 PHP 替代品,您有 phpbrew、phpenv 和 php-version。请注意,我是 php-version 的作者,所以我当然更喜欢它,因为我写它是为了解决我自己的痒(我想要一些最小的命令完成);然而,phpenv 也相当不错。两者都可以使用。

在 OS X 上,您可以使用 Homebrew 安装 PHP 版本管理器。

首先,为 homebrew 添加 PHP 公式:

% brew tap homebrew/homebrew-php

然后,使用从homebrew-php 安装的公式,您可以安装:

% brew install php-version

% brew install phpenv

php-versionREADME.md 列出了更多alternatives,因此您可能想看看。

顺便说一句,我认为php-version 与chruby 更一致,因为它试图做好一件事。

【讨论】:

关于 php-fpm;是的,您最终应该为您编译的每个 PHP 版本生成一个 php-fpm 二进制文件。当您使用php-versionphpenv 切换版本时,您将得到正确的php-fpm。他们所做的只是切换环境变量,包括$PATH$MANPATH 这对自动化测试很有帮助。谢谢! php-version 对我不起作用。 phpenv 似乎很有帮助。谢谢! 我发现 phpbrew 不提供简单的“brew install phpbrew”,所以我使用 php-version。我也跑了brew info phpbrew,什么也没有。 phpenv 的自述文件+安装文档只是没有提到任何类型的“brew install”。所以我不确定它是否真的适用于 phpenv。 所以如果你正在寻找一个简单的brew install.. 看起来 php-version 确实是要走的路,尽管 phpbrew 有更多的 github watchers+stars+forks【参考方案2】:

这是我的解决方案 (pvers)。一个完全用 bash 编写的单文件脚本。如果您正在寻找一个精简且易于安装且依赖最少的 php 版本管理器 - 试一试;)

【讨论】:

【参考方案3】:

有一个很棒的程序可以做到这一点,phpbrew。我积极使用它,我强烈推荐它。

https://github.com/phpbrew/phpbrew/wiki/Cookbook

【讨论】:

【参考方案4】:

如果你没有使用 php-cgi 并且将不同版本的 PHP 安装到不同的位置

    找到不同版本的libphp5.so,复制到不同的位置

    如果使用php5.3.11或php5.4.11

     ln -s php5.3.11 php  || ln -s php5.4.11
    

    分解你的 apache httpd.conf

     LoadModule php5_module        YOUR_PHP_PATH/php/libphp5.so
    

    重启apache

     sudo apachectl restart
    

【讨论】:

【参考方案5】:

看看phpenv(和php-build)。如果您brew tap josegonzalez/php,甚至还有自制食谱。它实际上是rbenv 而不是rvm 的PHP 版本,但我认为它会比phpfarm 更容易设置。

【讨论】:

【参考方案6】:

我认为phpfarm 是rvm 最接近的php 替代品,它还安装了pyrus,这就像php 世界的红宝石。

【讨论】:

phpfarm 无法在我的 Mac 中编译,RVM 是一个严重的事情 phpfarm 不是。【参考方案7】:

如果您正在运行 apache,我可以建议我解决此问题的方法。 将不同版本的 PHP 安装到不同的位置,并准备几个 apache php-x.y.z.conf 文件,如

ScriptAlias /php/ "path/to/php-5.2.10/"
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
Action application/x-httpd-php "/php/php-cgi"
<Directory "/php/">
    Order allow,deny
    Allow from all
</Directory>

,

ScriptAlias /php/ "path/to/php-5.3.0/"
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
Action application/x-httpd-php "/php/php-cgi"
<Directory "/php/">
    Order allow,deny
    Allow from all
</Directory>

等等,因此您可以快速更改包含的.conf文件的名称并重新启动服务器。或者,像我一样,让多个虚拟主机具有相同的文档根目录,但包含不同版本的 PHP:

<VirtualHost *:80>
    DocumentRoot "C:/www/localhost"
    ServerName local.php-5.2.10

    Include conf/php-5.2.10.conf

    <Directory "C:/www/localhost">
        Allow from All
    </Directory>
</VirtualHost>

【讨论】:

它似乎不会影响与rvm不同的命令行

以上是关于PHP 的 RVM 等价物?的主要内容,如果未能解决你的问题,请参考以下文章

什么是 PHP 的 var_dump() 的 Python 等价物? [复制]

Python 装饰器的 PHP 等价物?

PHP 的 geoip_isp_by_name 函数的等价物是啥?

PHP 的 ArrayObject 是不是有 in_array 等价物?

PHP 的 memory_get_usage 的 .NET 等价物是啥?

javascript 等价于 php unpack() 函数