我想创建一个Symfony CRUD应用程序,以下是我的步骤。
htdocs
用Windows的CLI创建一个symfony项目。composer create-project symfony/skeleton my_project
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?
谢谢大家
穆萨
你应该运行 composer dump-autoload
幸运的是,这很容易解决。你可以告诉你的composer.json根据特定的PHP版本安装供应商库。
例如,我们有一个项目目前正在从PHP5迁移到PHP7,我们不能安装只有PHP7版本的库,所以我们在你的composer.json中添加了这个。我们不能安装只有PHP7版本的库,所以我们在你的composer.json中添加了这个。
"config": {
"platform": {
"php": "5.3.29"
}
},
现在你应该可以安装了。删除你的 composer.lock
,然后运行 composer install
!
下面是相关文档。
我也有同样的情况,只要在我的zshrc中删除一个php7.2的导出路径就可以解决。
这可能是由于你上传的文件是 vendor/autoload.php
在另一个版本的php上生成。当使用CICD来构建你的PHP应用时,这种情况经常发生。
所以最好的方法是将这个文件从你的工件中排除,而不是在你的应用程序中运行 composer dump-autoload
(这可能是最后的机会解决方案)。
如果你有2个不同的Docker容器在运行,为同一个项目服务,就可能发生这种情况。它们轮流接受传入的请求。要解决这个问题,需要寻找一个使用 PHP 7.3.11 的老僵尸 Docker 容器,并在其上添加 docker stop
和 docker rm
它们。
在你的应用程序文件夹下,创建一个文本文件,并输入 7.4
,然后将文件重命名为 .php-version
没有名字,只有扩展名。它应该可以工作。
我通过运行
$ 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
composer安装的php文件夹和apache服务器如xampp、wampp、lampp的版本应该是相似的。
例如,如果composer安装的php版本是7.4或更高,那么apache服务器的版本如xampp、wampp、lampp也应该是7.4或更高。
我在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>
如果你的本地机器上有两个不同版本的php,这很容易发生。为了解决这个问题,在控制台中找到与你的本地服务器运行的php版本相匹配的版本,Composer会用正确的php版本重新创建锁文件。
rm composer.lock
/usr/bin/php /usr/local/bin/composer install
Composer会用正确的php版本重新创建锁文件。
你可以运行 composer update
重新安装与你的PHP版本兼容的供应商库版本。