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-version
或phpenv
切换版本时,您将得到正确的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 等价物? [复制]
PHP 的 geoip_isp_by_name 函数的等价物是啥?
PHP 的 ArrayObject 是不是有 in_array 等价物?