Symfony CLI 在运行“new”命令时没有使用正确的 PHP 版本

问题描述

我的环境设置如下:Wamp 3 with PHP7.1.33 version,composer 2 and the Symfony binary.

但是当我尝试运行 symfony new my_project_name --version=4.4 --full 时,我收到此错误:

在“./my_project_name”创建一个“symfony/website-skeleton”项目 您的 PHP 版本 5.4.12 受 CVE-2013-6420 影响,无法安全执行证书验证,我们强烈建议您升级。 [无效参数异常] 在使用您的 PHP 版本可安装的版本中找不到版本为 4.4.* 的包 symfony/website-skeleton, PHP 扩展和 Composer 版本。

如错误中所述,使用的是 PHP 5.4.12,但当我运行 php --version 时,我得到 7.1.33 版本。

解决方法

我没有使用过 WAMP 或 Symfony 二进制文件,但在 documentation 上它说:

如果您的计算机上安装了多个 PHP 版本,您可以告诉 Symfony 使用哪个版本,在项目根目录创建一个名为 .php-version 的文件

如果您安装了多个 PHP 版本,如果您使用 symfony local:php:list 命令,该工具显然会尝试找到它们并列出它们。不知道它是如何工作的或它有多可靠,但应该告诉您它是否能够检测到您的 PHP 7 运行时。

更重要的是,尽管 Symfony 部分的建议很糟糕,但您实际上并不需要使用 symfony 二进制文件来创建项目。二进制只是简单地调用composer,那么为什么不直接调用composer呢?这样您就可以确保您使用的是您想要和期望的 PHP 和 Composer 版本,而不是依赖中介。

就去做:

composer create-project symfony/website-skeleton your-project-name ^4.4

(这是您通过使用 --full 标志获得的结果,如果您不使用它,您只需安装 symfony/skeleton,它包含较少的开箱即用组件)。

顺便说一句,将二进制文件命名为 symfony 对 Symfony 来说是一个非常糟糕的选择,因为它几乎不可能搜索与工具相关的问题,而不是与框架相关的问题。或者建议使用binary而不是直接使用composer,为很多用户增加一层不透明。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...