为何终端里的 PHP 版本为 7.2,Laravel new 的时候提示是 7.1?

我在终端当中使用 php -v 查看版本号显示 7.2。

PHP 7.2.14 (cli) (built: Feb  1 2019 12:25:00) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

重新安装了 composer 和 laravel/installer,使用 laravel new blog 命令创建新项目时提示 7.1?

Crafting application...
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - This package requires php ^7.2 but your PHP version (7.1.32) does not satisfy that requirement.
  Problem 2
    - Installation request for doctrine/lexer 1.2.0 -> satisfiable by doctrine/lexer[1.2.0].
    - doctrine/lexer 1.2.0 requires php ^7.2 -> your PHP version (7.1.32) does not satisfy that requirement.
  Problem 3
    - Installation request for laravel/framework v6.9.0 -> satisfiable by laravel/framework[v6.9.0].
    - laravel/framework v6.9.0 requires php ^7.2 -> your PHP version (7.1.32) does not satisfy that requirement.
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
xianyunyehe
最佳答案

你可以通过查看你的 laravel 脚本是怎么写的。你系统应该存在两个php.
laravel 应该是在头部定义了env 使用 到了另外一个php

4年前 评论
大胆的番茄 (楼主) 4年前
讨论数量: 5
╰ゝSakura

应该是服务器里有多个版本的php吧,你看下监听的端口这些看看是不是有问题

4年前 评论
大胆的番茄 (楼主) 4年前
where php

看看有几个

4年前 评论
大胆的番茄 (楼主) 4年前
小李世界 (作者) 4年前

@likunyan 没有

localhost:.composer haaid$ cat composer.json 
{
    "require": {
        "laravel/installer": "^2.3"
    }
}
localhost:.composer haaid$ cat config.json 
{
    "config": {},
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://mirrors.aliyun.com/composer/"
        }
    }
}
4年前 评论
xianyunyehe

你可以通过查看你的 laravel 脚本是怎么写的。你系统应该存在两个php.
laravel 应该是在头部定义了env 使用 到了另外一个php

4年前 评论
大胆的番茄 (楼主) 4年前

评论不支持太多 md 语法,所以这里再发一次。

感谢,确实是这个问题导致的。

说下问题所在,mac 系统可能自带、或者不知道怎么装个了 php 7.1.32 版本,在 /usr/bin/php 下,我装了个 mamp 软件,在 ~/.profile 里定义了 php /Applications/...../php7.2.14/.../php,所以我通过控制台执行 php -v 时走的是别名,即 7.2.14。(usr/bin/php -v 输出 7.1.32)

laravel-install 里第一句话定义了 #!/usr/bin/env php,这句话的意思是从 /usr/bin/php/usr/local/bin/php 里找 php,就导致很难发现问题所在。

第一种解决方案:

# 用 php 7.2.14 的地址强制软链接到 /usr/bin/php
sudo ln -sf /Applications/MAMP/bin/php/php7.2.14/bin/php /usr/bin/php

如果你想同时存在多版本,可能这种方法不太合适。

第二种解决方案:

修改 laravel-install 里第一句话,去掉或指定 php 目录(不建议这种,太麻烦)

4年前 评论
xianyunyehe 4年前
大胆的番茄 (作者) (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!