Синтаксическая ошибка PHP 7.2 при наличии запятой в массиве при обновлении composer - PullRequest
3 голосов
/ 12 апреля 2020

Я бегу Ubuntu 16.04, PHP 7.2.29 и Composer 1.10.5. Я пытаюсь обновить composer update, но когда он начинает обновляться, перечисленные пакеты в конечном итоге попадают в пакеты, которые имеют конечные запятые в массивах, и это начинает сбрасывать синтаксические ошибки .

PHP Parse error:  syntax error, unexpected '' => ' (T_ENCAPSED_AND_WHITESPACE) in /var/www/vendor/yiisoft/extensions.php on line 52

Я пытался исправить эти ошибки непосредственно в пакетах (каталог поставщиков), и это позволяет мне двигаться вперед ... за исключением того, что ошибки никогда не прекращаются! (Обновление: я знаю, что это не ' t рекомендуется, это было сделано только для целей тестирования)

Образцы (обновление):

Это примеры файлов поставщика, которые отбрасывают эту синтаксическую ошибку. Во всех этих (и более) в качестве причины указываются последние строки файлов массива. Если я удаляю концевые запятые, происходит ошибка при поиске следующего файла вендора, который содержит концевые запятые.

Образец из /vendors/yiisoft/extensions.php

  'creocoder/yii2-nested-sets' => 
  array (
    'name' => 'creocoder/yii2-nested-sets',
    'version' => '0.9.0.0',
    'alias' => 
    array (
      '@creocoder/nestedsets' => $vendorDir . '/creocoder/yii2-nested-sets/src',
    ),
  ),
);

Образец из /vendors/composer/autoload_classmap.php

    'yii\\widgets\\Pjax' => $vendorDir . '/yiisoft/yii2/widgets/Pjax.php',
    'yii\\widgets\\PjaxAsset' => $vendorDir . '/yiisoft/yii2/widgets/PjaxAsset.php',
    'yii\\widgets\\Spaceless' => $vendorDir . '/yiisoft/yii2/widgets/Spaceless.php',
);

Пример из /vendors/composer/autoload_namespaces.php

    'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'),
    'DaveChild\\TextStatistics' => array($vendorDir . '/davechild/textstatistics/src'),
    '' => array($vendorDir . '/mofodojodino/profanity-filter/src'),
);

Насколько я понимаю, запятые - довольно распространенная практика, которая не должна вызывать проблем в PHP.

Кто-нибудь может сказать мне, что происходит или где я мог бы посмотреть дальше?

Дополнительные детали

Я думаю, что устанавливаемые пакеты не должны иметь значения, так как это, кажется, PHP общая ошибка, но на всякий случай это ЕСТЬ для более старой версии Craft CMS 3.0.34, работающей на Yii 2.0.15.1. Я работаю над обновлением этой версии, но не могу из-за этих проблем. Однако пакеты, отбрасывающие ошибки, различаются ... Я имею в виду ... Я отредактировал файлы ~ 6 разных поставщиков, прежде чем бросить эту глупую битву.

Обновление

После получения некоторых отзывов Я обнаружил, что при запуске той же установки на облачном сервере проблема не описана. Указывая на то, что каким-то образом запуск этого на установке VirtualBox / Vagrant вызывал его.

1 Ответ

0 голосов
/ 19 апреля 2020

Похоже, composer не использует PHP 7.2 (или выше). Вы можете проверить это, запустив php -v в командной строке. Чтобы увидеть, установлен ли у вас PHP 7.2, вы также должны быть в состоянии php7.2 хотя бы на более новой версии Ubuntu.

Надеюсь, это поможет

...