Попередження: перемикач націлювання «продовжити» еквівалентно «перерві». Ви мали на увазі використовувати “продовжити 2”? [зачинено]


83

У мене є php7.3 і symfony2.8 Коли я намагаюся створити класи за допомогою консолі, я отримую цю помилку:

[Symfony \ Component \ Debug \ Exception \ ContextErrorException] Попередження: перемикач націлювання "продовжити" еквівалентно "перерві". Ви мали на увазі використовувати "продовжити 2"?


3
Введіть свій код у запитання. (І редактору, будь ласка, не додайте до запитання, про яке OP фактично не сказав, настільки корисним, наскільки це може здатися. Це вкладає слова в рот і стає заплутаним.)
— Тайлер Ропер

Спробуйте "оновлення композитора". Може допомогти чи не допомогти. Попередження є результатом нещодавнього "виправлення" php і вимагає невеликого оновлення для виправлення. Ви також можете натрапити на попередження count () null. @trincot - І так, попередження чітке. Проблема полягає в тому, що його генерує стороння бібліотека. У дуже заплутаному блоці коду.
— Cerad

Ви перевірили, чи відповідає ваш сервер мінімальним вимогам? Поточна версія Symfony 4.2.3, тому дуже малоймовірно, що 2.8 підтримує PHP / 7.3, який вийшов менше 2 місяців тому.
— Альваро Гонсалес,

Я щойно перевірив, що, згідно з Packagist , Symfony / 2.8.49 був випущений того ж дня, що і PHP / 7.3. Тож, можливо, ця версія призначена для вирішення питань сумісності (я насправді не знаю).
— Альваро Гонсалес

Відповіді:


127

У мене така сама проблема, і у мене також є ця помилка, але в моєму випадку ця помилка відображається, коли я намагаюся запустити composer installабо composer update.

і я вирішую цю проблему, запустивши composer self-update. це працює над моїм проектом.


Якщо це не вдається (як для мене), спробуйте відповідь від Avnish alok на це питання. Версія композитора, встановлена ​​apt, є старою.
— Тревор

Це правильна відповідь, хоча вона могла б використовувати довідкову інформацію про те, що "Ваша версія для композитора застаріла, оновіть її". Це допомогло б людям, як Тревор вище, зрозуміти, що вони йдуть правильним шляхом, навіть якщо самооновлення не вдається.
— Matt Rabe

Для мене правильним рішенням було просто запустити composer updateпід час інсталяції помилку, хоча зовсім краще тримати композитора в курсі, просто кажучи тим, хто повинен подумати, які наслідки можуть призвести це до інших проектів на тому ж сервері; )
— Джон Сміт

49

Можливо, ваш композитор застарів. Нижче наведені кроки, щоб позбутися помилки.

Примітка. Для професіоналів Windows потрібні та виконані лише кроки 2 та 3.


Крок 1

Видалити композитора:

sudo apt-get remove composer

Крок 2

Завантажити композитора:

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

Крок 3

Запустіть файл composer-setup.php

php composer-setup.php

Крок 4

Нарешті перемістіть композитора:

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


Ваш композитор повинен бути оновлений зараз. Щоб перевірити його, виконайте команду:

композитор

Ви можете видалити завантажений композитор за допомогою команди php

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

1
На мою думку, це не пов'язано з композитором, а проблема з php 7.3
— Габріеле Ф.

1
Для глобального використання можна спробувати псевдонім composer = '/ usr / local / bin / composer'
— Едуард Брокан

30

На мою думку, проблема полягає у зворотній несумісності з PHP 7.3 для continueключового слова в операторах Switch. Погляньте на розділ "Попередження щодо проблем із перемиканням націлювання" у розділі " Зворотно несумісні зміни" .

Я зіткнувся з тією ж проблемою з Symfony 3.3 за допомогою PHP 7.3, і зниження до PHP 7.2 вирішило попередження.


21

Я перейшов на 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

і оновлення композитора працювали як шарм!



9

Ви намагалися зробити самооновлення композитора?

composer self-update

або

composer install


це дає мені помилкуCommand "self-update" is not defined
— mrid

Ви встановили композитор? ще завантажте та встановіть композитор зі свого сайту тут getcomposer.org/download
— kheengz

так, це було встановлено. але я думаю, що з цим могла бути якась проблема, він перестав встановлювати компоненти. я його очистив і встановив знову, і він працює :)
— mrid

6

Windows 10 Professional

PHP 7.3.1

Я запустив ці команди, щоб вирішити проблему на робочому столі

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

5

У моєму випадку php було оновлено з php7.2.22 до php7.3.9.

тому довелося знизити версію cli php, оскільки композитор запущений на терміналі

//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.
— Девід Баукум

5

Я змінив продовжувати продовжувати 2 на рядок 1579 у shortcodeComon.php, і це вирішило мою проблему

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

           continue;

    }

Перейти:

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

             continue 2;

   }



2

здається, це проблема з php7.3.

Якщо у вас встановлена ​​інша версія у вашій системі, ви можете використовувати це:

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

це спрацювало для мене


2

після оновлення мого xampp з 7.2.0 до 7.3.0 я стикаюся з цією проблемою, але після видалення composer.exe та встановлення останнього composer.exe з composer.org, ніж проблема вирішена


2

Я думаю, що це проблема версії, вам просто потрібно видалити стару версію композитора, а потім виконати нову інсталяцію нової версії.

 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. Композитор успішно встановлений зараз, зробіть доступ до нього глобально за допомогою наступної команди. для Ubuntu 16
 mv composer /usr/bin/

для Ubuntu 18

 mv composer /usr/local/bin/

2

У мене така сама проблема, коли я запускаю, composer install
я її вирішую, виконуючи в каталозі композитора, php composer.phar self-updateа потім у каталозі мого проектуcomposer update


1

На 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

1

Мені довелося оновити доктрину / орму:

composer update doctrine/orm

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

0

У мене була та сама проблема. але виправлено, завантаживши композитор і встановивши його з нуля.


0

Відповідь @ aimme слід прийняти!

Я продовжував би його відповідь коментарем @ david-baucum, оскільки його пояснення чітке!

Я також поширюю його відповідь про те, що ви можете запускати кілька версій PHP одночасно, використовуючи ppa:ondrej/php.

Тоді вам не потрібно змінювати версію PHP, просто зателефонуйте композитору так: /usr/bin/php7.2 /usr/local/bin/composer install


0

Вибачте за "копання", але я щойно запропонував цю проблему розгортанням проекту symfony3.8 на спільному хостингу (php 7.3.18) ...

Я вирішив цю проблему, встановивши обмеження пам’яті php у параметрах командного рядка, наприклад:

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


-1

Якщо ваш код не може бути оновлений з якоїсь причини, просто змініть його switch ... continueна switch ... break, як і в попередніх версіях PHP, він мав працювати таким чином.


-4

Щоб усунути цю помилку, вам потрібно перейти до файлу wp-config і додати ці рядки коду

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

2
Ваша відповідь щодо wordpress. Питання стосується symfony.
— Asone
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.