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

问题描述 投票:0回答:3

我想生成一个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
参数,看看是否可以添加一些约束,但似乎没有一个有用。(或者没有弄清楚)

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

您的 Composer 依赖项需要 PHP 版本 >= 8.0.0”。您正在运行 7.4.22.

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

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

php symfony composer-php
3个回答
3
投票

您不能向

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
我得到:

您的要求无法解析为一组可安装的软件包。

enter image description here


2
投票

在使用 PHP 8 的示例项目中运行

composer create-project symfony/website-skeleton my_project_name
会在 v2 中安装
psr/cache
,在 v1.1.1 中安装
psr/link
。这些软件包版本需要 PHP 8,并且无法使用任何旧版本的 PHP。

为了避免这种情况,请不要使用比您想要在生产系统上使用的版本更高的版本运行

composer create-project
(通常,使用比生产系统更低的 PHP 版本运行它会产生一组兼容的包)与生产系统有关,而反之则机会较低)。

否则,在部署之前使用

composer why-not php 7.4
检查是否有此类包版本并降级


0
投票

另一种选择是使用

--ignore-platform-reqs
标志

composer create-project symfony/skeleton my-project-name --ignore-platform-reqs

但是,这失败了,因为安装过程中执行的 PHP 代码与系统路径中设置的 PHP 版本不兼容。

因此,如果需要,请从所需的 PHP 可执行文件手动运行 Composer。

C:/xampp/php83/php.exe C:/ProgramData/ComposerSetup/bin/composer.phar create-project symfony/skeleton my-project-name --ignore-platform-reqs

为了安全起见,我添加了 config.platform 设置:

"config" : {
    "allow-plugins" : {
        "php-http/discovery" : true,
        "symfony/flex" : true,
        "symfony/runtime" : true
    },
    "bump-after-update" : true,
    "sort-packages" : true,
    "platform": {"php": ">=8.3"}
},
© www.soinside.com 2019 - 2024. All rights reserved.