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

Posted

技术标签:

【中文标题】Symfony CLI 在运行“new”命令时没有使用正确的 PHP 版本【英文标题】:Symfony CLI does not use the correct PHP version when running the "new" command 【发布时间】:2021-08-10 19:02:45 【问题描述】:

我的环境设置如下:Wamp 3 和 php7.1.33 版本、composer 2 和 Symfony 二进制文件。

但是当我尝试运行 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 版本。

【问题讨论】:

这能回答你的问题吗? How to change PHP version used by composer 我假设您的意思是 WAMPServer。如果您有 PHP7.1.33(请注意,如果您愿意,可以将其升级到 PHP 8 或介于两者之间的任何版本),这并不意味着 PHP CLI 正在使用该版本的操作系统 请参阅此答案以查看如何获取终端使用你想要的任何版本的 PHP ***.com/questions/15597067/… @NicoHaase 是的,谢谢!即使我设置了环境变量,我猜 php 仍然指向旧版本的 wamp。我不得不用 php7.1.33 替换旧 wamp 中的 php5.4.12 文件夹,它对我有用。 【参考方案1】:

我没有使用 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 来说是一个非常糟糕的选择,因为它几乎不可能搜索与工具相关的问题,而不是与框架相关的问题。或者建议使用二进制而不是直接使用composer,为很多用户增加一层不透明度。

【讨论】:

以上是关于Symfony CLI 在运行“new”命令时没有使用正确的 PHP 版本的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular CLI 中使用 ng new 命令出错 [重复]

在CLI中执行时,Symfony`url()`Twig函数如何确定绝对路径?

运行命令doctrine:schema:update symfony时出错

symfony 中的 Make:migration 命令运行了很长时间而没有工作

运行 Symfony 命令时无法加载 PHP 类

如何从控制器运行 symfony 2 运行命令