我想生成一个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 并且在托管上做同样的事情可能会很麻烦。
您不能向
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
我得到:
您的要求无法解析为一组可安装的软件包。
在使用 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
检查是否有此类包版本并降级
另一种选择是使用
--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"}
},