致命错误:composer.lock是为PHP 7.4或更高版本创建的,但当前PHP版本是7.3.11。

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

我想创建一个Symfony CRUD应用程序,以下是我的步骤。

  • 从这里下载并安装XAMPP和PHP 7.3.11。https:/www.apachefriends.orgdeindex.html
  • 导航到 htdocs 用Windows的CLI创建一个symfony项目。
  • 用命令创建一个symfony项目。composer create-project symfony/skeleton my_project
  • 打开我的浏览器(Firefox 70.0.1),导航到这个网址。localhost/my_project/public/

这里我得到了错误信息。

Fatal Error: composer.lock was created for PHP version 7.4 or higher but the current PHP version is 7.3.11.

当我在CLI中检查我的PHP版本时,用 php -v 我得到的结果是我使用的是PHP 7.4.0 (cli).当我在XAMPP的仪表板上点击PHPInfo(localhostdashboardphpinfo.php)检查php版本时,页面显示的是php版本7.3.11。

在创建的symfony文件夹中,有一个叫做 symfony.lock. 有一个条目叫 "php": { "version": "7.4" },. 改变这个条目并没有解决我的问题。

还有为什么我不能用XAMPP安装和测试最新的symfony?

谢谢大家

穆萨

php symfony composer-php
1个回答
11
投票

你应该运行 composer dump-autoload


9
投票

幸运的是,这很容易解决。你可以告诉你的composer.json根据特定的PHP版本安装供应商库。

例如,我们有一个项目目前正在从PHP5迁移到PHP7,我们不能安装只有PHP7版本的库,所以我们在你的composer.json中添加了这个。我们不能安装只有PHP7版本的库,所以我们在你的composer.json中添加了这个。

  "config": {
    "platform": {
      "php": "5.3.29"
    }
  },

现在你应该可以安装了。删除你的 composer.lock,然后运行 composer install!

下面是相关文档。

https:/getcomposer.orgdoc06-config.md#platform。


1
投票

我也有同样的情况,只要在我的zshrc中删除一个php7.2的导出路径就可以解决。


1
投票

这可能是由于你上传的文件是 vendor/autoload.php 在另一个版本的php上生成。当使用CICD来构建你的PHP应用时,这种情况经常发生。

所以最好的方法是将这个文件从你的工件中排除,而不是在你的应用程序中运行 composer dump-autoload (这可能是最后的机会解决方案)。


0
投票

如果你有2个不同的Docker容器在运行,为同一个项目服务,就可能发生这种情况。它们轮流接受传入的请求。要解决这个问题,需要寻找一个使用 PHP 7.3.11 的老僵尸 Docker 容器,并在其上添加 docker stopdocker rm 它们。


0
投票

在你的应用程序文件夹下,创建一个文本文件,并输入 7.4,然后将文件重命名为 .php-version 没有名字,只有扩展名。它应该可以工作。


0
投票

我通过运行

$ symfony local:php:refresh

的输出,因为在项目文件夹中运行 $ php --version 给我 PHP 7.4.1 (cli)$ symfony php --version 给我 PHP 7.3.13-1+ubuntu16.04.1+deb.sury.org+1.

刷新后,他们显示的是相同的版本。

编辑: 这需要使用 symfony-binary


0
投票

composer安装的php文件夹和apache服务器如xampp、wampp、lampp的版本应该是相似的。

例如,如果composer安装的php版本是7.4或更高,那么apache服务器的版本如xampp、wampp、lampp也应该是7.4或更高。


0
投票

我在Azure WebApp中遇到了这个问题,我通过将CGI设置为正确的版本来解决。

   <handlers>
        <remove name="PHP74_via_FastCGI"/>
        <add name="PHP74_via_FastCGI" path="*.php" verb="GET, PUT, POST, DELETE, HEAD, OPTIONS" modules="FastCgiModule"
             scriptProcessor="D:\Program Files\PHP\v7.4\php-cgi.exe" resourceType="Either" requireAccess="Script"/>
    </handlers>

-1
投票

如果你的本地机器上有两个不同版本的php,这很容易发生。为了解决这个问题,在控制台中找到与你的本地服务器运行的php版本相匹配的版本,Composer会用正确的php版本重新创建锁文件。

rm composer.lock
/usr/bin/php /usr/local/bin/composer install

Composer会用正确的php版本重新创建锁文件。


-2
投票

你可以运行 composer update 重新安装与你的PHP版本兼容的供应商库版本。

© www.soinside.com 2019 - 2024. All rights reserved.