windows 环境下多个版本 php 下使用 composer 冲突问题

windows 环境下多个版本 php 下使用 composer 冲突问题


在尝试安装 FastAdmin 时,碰到了以下问题:

win10@win10 MINGW64 /e/PhpStudy20180211/PHPTutorial/WWW/fastadmin (master)
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - endroid/qr-code 1.9.3 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - endroid/qr-code 1.9.2 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - endroid/qr-code 1.9.1 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - endroid/qr-code 1.9.0 requires ext-gd * -> the requested PHP extension gd is missing from your system.
    - Installation request for endroid/qr-code ^1.9 -> satisfiable by endroid/qr-code[1.9.0, 1.9.1, 1.9.2, 1.9.3].

  To enable extensions, verify that they are enabled in your .ini files:
    - E:\PhpStudy20180211\PHPTutorial\php\php-7.0.12-nts\php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

很明显,这里产生了错误,提示 qr-code 需要 phpgd 扩展。

但是 ,细看之下发现另一个问题,使用的 php 版本是 php-7.0.12 ,但是我目前实际开发中,使用的是 php-7.1.13

这是为什么呢? 原因是 composer 引用了 php 全局环境变量,我这里 win 10 设置的全局环境变量 php 命中路径就是指定到旧版本 php-7.0.12,而非实际开发的目前版本 php-7.1.13 ,这种情况下如何处理?

当然,个人觉得这种多 php 版本混合的开发本身就比较麻烦的,应该利用 Docker 工具的。

前提

  1. 破话原有的环境。【建立在原有环境不重要的情况下】
    只要去修改原有的 windows 全局 php 环境变量即可。
    网上还看到一种说法是重装 composer ,应该是指在 linux 下这样操作。
  2. 不破话原有的环境。【这才是正常的操作,一般如果电脑部署了多版本 php ,最好是不影响原有的环境,保不准到时候产生一个隐性 bug】
    如何在多版本的情况下使用 composer 而互不干扰呢?

解决

先去 composer 官网 下载 composer.phar 这个文件,这是 php归档文件包 。先放到某个地方,我是放在本地服务器根目录 E:\PhpStudy20180211\PHPTutorial\WWW 下的,然后进入你的本地服务器根目录调用这个 composer.phar。操作演示如下:

PS C:\Users\win10> cd E:\PhpStudy20180211\PHPTutorial\WWW
PS E:\PhpStudy20180211\PHPTutorial\WWW>
PS E:\PhpStudy20180211\PHPTutorial\WWW> E:\PhpStudy20180211\PHPTutorial\php\php-7.1.13-nts\php.exe .\composer.phar -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.10.6 2020-05-06 10:28:10

可以看到已经输出了下载的 composer 版本。

这是属于一次性的调用,因为没有环境变量的支持,后面如果要再次使用 php-7.1.13 版本的时候,依然需要 composer 和想要调用的 php 版本全路径。而原来使用 php 环境,依然按照原来的全局命令 composer ,互不干扰。

这里举个例子,安装 thinkphp 6:

PS E:\PhpStudy20180211\PHPTutorial\WWW> E:\PhpStudy20180211\PHPTutorial\php\php-7.1.13-nts\php.exe .\composer.phar create-project topthink/think=6.0.x-dev tp

其格式含义大致如下:

PS 项目目录(你想要在哪个目录下实行composer)> php版本目录路径(你想要调用的php版本) composer目录路径(你想要单独调用的composer.phar) composer命令(你想要composer帮你完成的事情)

那最开始的问题如何解决呢?在你确认该 php 开启了 gd 库的情况下,如下操作:

win10@win10 MINGW64 /e/PhpStudy20180211/PHPTutorial/WWW/fastadmin (master)
$ E:\\PhpStudy20180211\\PHPTutorial\\php\\php-7.1.13-nts\\php.exe \
> E:\\PhpStudy20180211\\PHPTutorial\\WWW\\composer.phar \
> install

这里解释一下,路径里包含双 \\ 是因为在 git Console 应用里 \ 被解析成转义字符。可以使用并且也推荐路径分隔符采纳为 / 更通用。路径最后面的 \ 是属于换行符,代表一段语句太长换到下一行输入,这里这样使用主要是因为输入过长会导致字符顺序混乱。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值