mac 多个php版本,Mac, PHP-version, Mac上实现多个PHP版本切换

#!/usr/bin/php

// php-version 这个脚本放入~/bin目录下.

// TODO: 如果没有 ~/bin/目录 那么建一个

// $PATH中增加 ~/bin/目录

// 获取调用参数

if(!empty($argv)){

$toVer = $argv[1];

}

$path = "/usr/local/Cellar/";// 这个是brew安装php版本路径,注意需要手动在php目录下软连接bin目录

$phps = array();

$files = scandir($path);

// 2. 执行以下,把可用版本号和对应路径放入数组

foreach ($files as $name) {

if (preg_match('/php@[0-9]{1}\.[0-9]{1}$/',$name)) {

foreach (scandir("{$path}{$name}") as $v) {

if (preg_match('/[0-9].*?[0-9]$/', $v)) {

$phps[] = "{$path}{$name}/{$v}/bin/php";//绝对路径 /bin/php

}

}

}

}

$list = [];

foreach ($phps as $phpBin) {

$ver = getVersionNumber($phpBin);

$list[$ver] = $phpBin;

}

// 一个都没有,可能是上面$path路径错了.那么直接给一个提示

if(empty($list)){

echo "\033[31m {$path} 目录下没有找到php@7.0这样的目录.请检查! \033[0m\n";

die;

}

// 3. 获取当前php的版本

$currentPHP = exec("which php");

$currentPHP = getVersionNumber($currentPHP);

if(is_null($toVer)){

// 执行命令: php-version

// 显示当前php版本,和列表:

// 5.4

// * 7.0

// 7.2

// 4. 显示出来

foreach ($list as $ver => $path) {

if($ver == $currentPHP){

echo "\033[47;30m* {$ver} \033[0m \n";//白底黑字

}else{

echo "\033[32m {$ver} \033[0m\n";// 绿字

}

}

}else{

// 切换版本

// 执行命令: php-version 70

// 检查是否存在版本?

if(array_key_exists($toVer, $list)){

// 通过下面命令,完成切换版本:

exec("ln -sf {$list[$toVer]} ~/bin/php");

}else{

echo "\033[31m 找不到php版本{$toVer} \033[0m \n";

die;

}

}

// 传php bin文件绝对路径,返回php版本号

function getVersionNumber($phpBin='')

{

// 多行返回放入数组

exec("{$phpBin} -v", $output);

// 正常只关心第一行.

preg_match("/\d+\.\d+/", $output[0], $match);

return $match[0];

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值