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

Posted

技术标签:

【中文标题】如何强制为特定 PHP 版本创建新的 Symfony 应用程序?【英文标题】:How to force creating a new Symfony application for a specific PHP version? 【发布时间】:2021-10-20 23:33:36 【问题描述】:

我想生成一个可以兼容 php 版本高达 7.4.22 的 Symfony 应用程序。

在我的本地机器上,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,并且在托管上做同样的事情可能会很麻烦。

【问题讨论】:

另外,在两个系统上使用 same 版本会更容易。其他一切只会造成麻烦 是的,有但也不想从那里修改 "require": "php": ">=7.2.5" ,但是这个json也是由create-project生成的。所以认为在第一个命令可以添加额外的参数? @NicoHaase 谢谢。对于所有 cmets,但您还需要什么细节?我清楚地说明了我正在尝试而不是在工作的内容。 (最好说没有尝试其他任何东西,而是生成标准应用程序,在主机上上传并查看错误)。我的问题是重新制定是否有任何解决方法而不更改本地 php_version。仍然可以尝试更多的东西...... @NicoHaase ,对于部署只需 ftp-copy 并修改 index.php 的路径。在主机上使用console 进行故障排除。 (更好地想象开发将在本地机器和主机上的端口上)。如果有帮助,我可以分享json 【参考方案1】:

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

例如类似于虚构的create-project symfony/skeleton --dep php: "^7"

你可以做的是:

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

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

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

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

【讨论】:

【参考方案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的包版本

【讨论】:

以上是关于如何强制为特定 PHP 版本创建新的 Symfony 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

强制依赖使用特定的子依赖版本

React:如何强制浏览器为 OPTION 发送特定的标头(预检)

如何强制 Jacoco 在 Gradle 中使用特定版本

pip install:如何强制使用特定的软件包版本

当系统中安装了多个 php 版本时,如何使用 pecl 为特定的 php 版本安装 php 扩展?

如何强制 JBoss 部署使用特定版本的依赖项而不是已安装的模块?