如何强制为特定 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-project
将config.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 发送特定的标头(预检)