运行“new”命令时,Symfony CLI 不使用正确的 PHP 版本

zac*_*ulg 3 php symfony symfony4 symfony-4.4 symfony-cli

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

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

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

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

yiv*_*ivi 5

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

如果您的计算机上安装了多个 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
Run Code Online (Sandbox Code Playgroud)

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

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