如何强制为特定 PHP 版本创建新的 Symfony 应用程序?

How to force creating a new Symfony application for a specific PHP version?

我想生成一个 Symfony 应用程序,它可以与 PHP 7.4.22 版本兼容。

在我的本地机器上,PHP 版本是 8.0.2,但在主机上是 7.4.22。

Symfony 应用程序是使用标准 composer 命令从本地计算机生成的

 composer create-project symfony/website-skeleton my_project_name

我查看了 create-project 个参数,看看是否可以添加一些约束,但 none 似乎很有用。(或没有弄清楚)

如果尝试上传以托管项目,我会在尝试安装它时收到此消息:

Your Composer dependencies require a PHP version ">= 8.0.0". You are running 7.4.22.

只需要一个默认的空项目来检查托管上的内容。

我不想改变本地 PHP 并且在主机上做同样的事情可能会很麻烦。

您不能向 create-project 添加“依赖约束”。

例如有点像虚构的create-project symfony/skeleton --dep php: "^7".

您可以做的是:

  1. 第一create-project
  2. config.platform 键添加到您的 composer.json 调整为您的服务器版本 (Docs.)
  3. 运行 composer update

如果需要,一些软件包将被降级,或者您会收到一条消息,告诉您新的目标版本不兼容。

例如在执行 create-project symfony/skeleton 并将 config.platform.php 更改为 7.2 后,执行 composer update 我得到:

Your requirements could not be resolved to an installable set of packages.

运行 composer create-project symfony/website-skeleton my_project_name 在使用 PHP 8 的示例项目中,在 v2 中安装 psr/cache,在 v1.1.1 中安装 psr/link。这些软件包版本需要 PHP 8,它们将无法使用任何旧版本的 PHP。

为避免这种情况,请不要 运行 composer create-project 使用比您要在生产系统上使用的版本更高的版本(通常,运行将其与低于生产版本的 PHP 版本会产生一组与生产系统兼容的软件包,反之则机会较低。

否则,在部署和降级之前使用composer why-not php 7.4检查是否有这样的包版本