警告: "continue" targeting switch 相当于 "break"。你是想使用 "continue 2" 吗?

116

我拥有php7.3和symfony2.8,当我尝试使用控制台创建类时,我会遇到这个错误:

[Symfony\Component\Debug\Exception\ContextErrorException]警告: "continue"指向的switch等同于"break"。你的意思是要使用"continue 2"吗?


3
请在问题中包含您的代码。(对于编辑,请不要添加OP实际上没有说过的内容,尽管这可能会很有帮助。这会替他们说话并变得令人困惑。) - Tyler Roper
尝试运行 "composer update" 命令,可能会有所帮助。这个警告是最近 PHP 的一个“修复”导致的,需要进行轻微更新才能解决。你可能还会遇到 count() null 警告。@trincot - 是的,这个警告很明显。问题在于它是由第三方库生成的,在一个非常混乱的代码块中。 - Cerad
你是否验证了你的服务器是否符合最低要求?当前Symfony版本为4.2.3,所以很不可能2.8支持PHP/7.3,这个版本是在不到2个月前发布的。 - Álvaro González
我刚刚查了一下,根据Packagist的记录,Symfony/2.8.49与PHP/7.3是在同一天发布的。因此,也许这个版本是为了解决兼容性问题(我不太清楚)。 - Álvaro González
20个回答

149

我遇到了同样的问题并且也出现了这个错误,但在我的情况下,当我尝试运行 composer install 或者 composer update 时就会出现这个错误。

我通过运行 composer self-update 来解决这个问题。它在我的项目上起作用了。


如果这个方法失败了(就像对我来说一样),接下来可以尝试 Avnish alok 给出的答案。apt 安装的 composer 版本太旧了。 - Trevor
这是正确的答案,尽管它可以使用背景信息来说明“您的composer版本太旧,请更新它。” 这将帮助像上面的Trevor一样的人意识到他们正在走上正确的道路,即使自动更新失败。 - Matt Rabe
对我来说,正确的解决方案就是在安装时出现错误时运行composer update。虽然最好让Composer自己保持最新状态,但对于那些必须考虑此操作对同一服务器上其他项目可能带来的影响的人来说,这只是一个建议。 - john Smith

54

也许您的Composer已过时。以下是消除错误的步骤。

注意:对于 Windows 专业人员,只需要执行步骤2和步骤3。


步骤1

移除Composer:

sudo apt-get remove composer

步骤2

下载composer:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

第三步

运行composer-setup.php文件

php composer-setup.php

步骤4

最后移动composer:

sudo mv composer.phar /usr/local/bin/composer  

你的Composer现在应该已经更新了。要检查,请运行以下命令:

composer

您可以使用php命令删除已下载的composer。

php -r "unlink('composer-setup.php');"

3
我认为这与Composer无关,而是PHP 7.3的问题。 - Gabriele F.
1
要在全局范围内使用,可以尝试使用别名 composer='/usr/local/bin/composer' - Eduard Brokan

45
这个问题在我看来是由于PHP 7.3的switch语句中的continue关键字不兼容而引起的。请查看向后不兼容的更改中的“Continue Targeting Switch issues Warning”部分。
我在使用PHP 7.3和Symfony 3.3时遇到了同样的问题,降级到PHP 7.2解决了警告。

是的 - 这是正确的答案。 - Steve Mc

28

我在shortcodeComon.php的1579行将continue改为continue 2,这样就解决了我的问题。

   if(trim($custom_link[$i]) == ""){

           continue;

    }

转化为:

  if(trim($custom_link[$i]) == ""){

             continue 2;

   }


简陋但有效。 - Q Studio
不错的解决方案。非常感谢。我已经为这个答案点了赞。 - Mujahid Bhoraniya

23

我升级到了PHP 7.3,在使用之前这些都不起作用。

sudo wget https://getcomposer.org/download/1.8.0/composer.phar -O /usr/local/bin/composer && sudo chmod 755 /usr/local/bin/composer

只是版本依赖的问题。PHP 7.3和composer update非常顺利!


16

composer self-update composer install

现在,它应该可以正常工作了。

在此输入图片描述


1
Command "self-update" is not defined. - oligofren

9

在我的情况下,PHP 从 php7.2.22 升级到了 php7.3.9。

因此必须降级CLI PHP,因为 Composer 是在终端上运行的。

//checked php version
php -v //was 7.3.9

//changed cli version back to 7.2
sudo update-alternatives --set php /usr/bin/php7.2
sudo update-alternatives --set phar /usr/bin/phar7.2
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.2
sudo update-alternatives --set phpize /usr/bin/phpize7.2
sudo update-alternatives --set php-config /usr/bin/php-config7.2

//checked php version 
php -v //was 7.2.22

如果你正在使用Apache,请记得保持cli和Apache的版本一致。在我的情况下,我不得不降级版本。
//changed web version back to 7.2
sudo a2dismod php7.3
sudo a2enmod php7.2
sudo service apache2 restart

这也适用于其他版本。所以随时可以切换版本,只需适当更改版本号即可。


1
我也遇到了同样的问题。问题在于我们仍然使用较旧版本的Symfony(2.8),该版本在PHP 7.3上无法正常工作。 - David Baucum
我曾经遇到过同样的问题,后来我检查了我的PHP版本,发现是7.4,然后我切换到了7.2,现在一切正常。(Symfony 2.8) - Hariharan Kanakaraja

7

Windows 10专业版

PHP 7.3.1

我在我的台式电脑上运行了这些命令来解决问题。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php

6

这似乎是与php7.3有关的问题,我想。

如果您的系统安装了不同版本,则可以使用以下内容:

php7.1 /usr/bin/composer update // or wherever your composer is

它对我来说有效


4
当我运行composer install时,我遇到了同样的问题。 我通过在composer目录中执行php composer.phar self-update,然后在我的项目目录中执行composer update来解决它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接