为何终端里的 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.
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前

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