【问题标题】:Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? [closed]警告:“继续”定位开关相当于“中断”。您的意思是使用“继续 2”吗? [关闭]
【发布时间】:2019-06-08 15:06:54
【问题描述】:

我有 php7.3 和 symfony2.8 当我尝试使用控制台创建类时,我收到此错误:

[Symfony\Component\Debug\Exception\ContextErrorException]警告: “继续”定位开关相当于“中断”。你的意思是 使用“继续 2”?

【问题讨论】:

  • 请在问题中包含您的代码。 (对于编辑,请不要在 OP 实际上没有说的问题中添加任何东西,尽管看起来很有帮助。它把话放在嘴里并变得混乱。)
  • 尝试“作曲家更新”。可能有帮助,也可能没有帮助。该警告是最近 php“修复”的结果,需要稍作更新才能修复。您可能还会遇到 count() null 警告。 @trincot - 是的,警告很清楚。问题是它是由第三方库生成的。在一个非常混乱的代码块中。
  • 您是否验证过您的服务器是否符合最低要求?当前的 Symfony 版本是 4.2.3,因此 2.8 不太可能支持不到 2 个月前发布的 PHP/7.3。
  • 我刚刚检查过,根据Packagist,Symfony/2.8.49 与 PHP/7.3 在同一天发布。所以也许那个版本是为了解决兼容性问题(我真的不知道)。

标签: php symfony


【解决方案1】:

我也遇到了同样的问题,也遇到了这个错误,但在我的情况下,当我尝试运行 composer installcomposer update 时会显示此错误。

我通过运行composer self-update 解决了这个问题。它适用于我的项目。

【讨论】:

  • 如果这失败了(就像我一样)接下来是尝试 Avnish alok 对这个问题的回答。 apt安装的composer版本太旧了。
  • 这是正确的答案,尽管它可以使用“您的作曲家版本太旧,更新它”的背景信息。这将帮助像上面 Trevor 这样的人意识到他们走在正确的道路上,即使是自我更新失败。
  • 对我来说,正确的解决方案是在安装时运行composer update,但发生错误,尽管让作曲家保持最新完全更好,只是对那些必须考虑什么含义的人说可能会将其带到同一服务器上的其他项目;)
【解决方案2】:

也许你的作曲家已经过时了。 以下是摆脱错误的步骤。

注意:对于 Windows 专业人士,只需要并完成 Step2 和 Step3。


第一步

删除作曲家:

sudo apt-get remove composer

第二步

下载作曲家:

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

第三步

运行 composer-setup.php 文件

php composer-setup.php

第四步

最后移动作曲家:

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


您的作曲家现在应该更新了。要检查它运行命令:

作曲家

可以通过php命令删除下载的composer

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

【讨论】:

  • 在我看来这与作曲家无关,而是 php 7.3 的问题
  • 要全局使用可以试试 alias composer='/usr/local/bin/composer'
【解决方案3】:

在我看来,问题是与 PHP 7.3 的 Switch 语句中的 continue 关键字向后不兼容。查看Backward Incompatible Changes 中的“继续定位开关发出警告”部分。

我在使用 PHP 7.3 的 Symfony 3.3 中遇到了同样的问题,降级到 PHP 7.2 解决了警告。

【讨论】:

  • 是的 - 这是正确的答案。
【解决方案4】:

我升级到 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

作曲家更新就像一个魅力!

【讨论】:

    【解决方案5】:

    composer self-update composer install

    现在应该可以了

    【讨论】:

    • Command "self-update" is not defined.
    【解决方案6】:

    我在 shortcodeComon.php 的第 1579 行更改了 continue to continue 2 并解决了我的问题

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

    改为:

      if(trim($custom_link[$i]) == ""){
    
                 continue 2;
    
       }
    
    

    【讨论】:

    • 粗糙,但有效..
    • 不错的解决方案。非常适用。我已经为这个答案投了赞成票
    【解决方案7】:

    您是否尝试过作曲家自我更新?

    composer self-update

    composer install

    【讨论】:

    • 这给了我错误Command "self-update" is not defined
    • 你安装作曲家了吗?否则从他们的网站下载并安装作曲家getcomposer.org/download
    • 是的,它已安装。但我认为它可能存在一些问题,它停止安装组件。我清除它并再次安装它并且它可以工作:)
    【解决方案8】:

    Windows 10 专业版

    PHP 7.3.1

    我运行了这些命令来解决我桌面上的问题

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

    【讨论】:

      【解决方案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
      

      这将适用于其他版本。所以请随意在版本之间切换。只需适当地替换版本号

      【讨论】:

      • 我遇到了同样的问题。问题是我们仍在使用旧版本的 Symfony (2.8),它在 PHP 7.3 上无法正常工作。
      【解决方案10】:

      我猜这似乎是 php7.3 的问题。

      如果你的系统上安装了不同的版本,那么你可以使用这个:

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

      对我有用

      【讨论】:

        【解决方案11】:

        我在运行composer install 时遇到了同样的问题
        我通过在作曲家目录php composer.phar self-update 然后在我的项目目录composer update 中解决它

        【讨论】:

          【解决方案12】:

          或从站点下载composer.phar:“https://getcomposer.org/download/”(手动下载),并使用命令:

          php composer.phar require your/package
          

          【讨论】:

            【解决方案13】:

            在将我的 xampp 从 7.2.0 升级到 7.3.0 后,我遇到了这个问题,但是在 unistall composer.exe 并从 composer.org 安装最新的 composer.exe 之后,问题就解决了

            【讨论】:

              【解决方案14】:

              我必须升级学说/orm:

              composer update doctrine/orm
              
              Updating doctrine/orm (v2.5.13 => v2.6.6)
              

              【讨论】:

                【解决方案15】:

                我认为是版本问题,你只需要卸载旧版本的composer,然后重新安装它的新版本。

                 apt remove composer
                

                并按照以下步骤操作:

                1. 使用以下命令从其官方发布站点下载作曲家。
                 wget https://getcomposer.org/download/1.6.3/composer.phar
                
                1. 在继续安装之前,您应该在安装之前重命名并使其成为可执行文件。
                  mv composer.phar composer
                
                  chmod +x composer
                
                1. 现在使用以下命令安装软件包。
                 ./composer
                
                1. 现在composer已经安装成功,使用下面的命令让它全局访问。 对于 Ubuntu 16
                 mv composer /usr/bin/
                

                适用于 Ubuntu 18

                 mv composer /usr/local/bin/
                

                【讨论】:

                  【解决方案16】:

                  在 debian 9 php7.3 上,上面粘贴的答案完美无缺。


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

                  【讨论】:

                    【解决方案17】:

                    我遇到了同样的问题。但是通过下载作曲家并从头开始安装来修复它。

                    【讨论】:

                      【解决方案18】:

                      如果您的代码由于某种原因无法更新,只需将您的 switch ... continue 更改为 switch ... break,就像在以前的 PHP 版本中一样,它本来就是以这种方式工作的。

                      【讨论】:

                        【解决方案19】:

                        @aimme 的回答应该被接受!

                        我会用@david-baucum 的评论来扩展他的回答,因为他的解释很清楚!

                        我还将扩展他的回答,即您可以使用 ppa:ondrej/php 同时运行多个 PHP 版本。

                        然后你不需要改变 PHP 版本简单地调用作曲家是这样的: /usr/bin/php7.2 /usr/local/bin/composer install

                        【讨论】:

                          【解决方案20】:

                          对不起,“挖掘”,但我只是通过共享主机上的 symfony3.8 项目部署(php 7.3.18)来鼓励这个问题......

                          我通过在命令行选项中设置 php 内存限制解决了这个问题,如下所示:

                          php -dmemory_limit=-1 /path/to/the/executable

                          【讨论】:

                            【解决方案21】:

                            为了消除这个错误,你必须在 wp-config 文件中添加这些代码行

                            define('WP_DEBUG_DISPLAY', false);
                            @ini_set('display_errors',0);
                            

                            【讨论】:

                            • 你的答案是相对于wordpress的。这个问题与 symfony 相关。
                            猜你喜欢
                            • 2020-05-27
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2019-12-18
                            • 1970-01-01
                            • 2010-11-04
                            • 2016-09-03
                            相关资源
                            最近更新 更多