簡體   English   中英

PHP 7.2 作曲家更新時數組中尾隨逗號的語法錯誤

[英]PHP 7.2 syntax error on trailing comma in array on composer update

我正在運行Ubuntu 16.04PHP 7.2.29Composer 1.10.5 我正在嘗試更新composer update ,但是當它開始更新列出的包時,最終會到達在 arrays 中有逗號結尾的包,這開始拋出語法錯誤

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

我試圖直接在包(供應商目錄)中更正這些錯誤,這確實讓我能夠繼續前進......除了錯誤永遠不會停止! (更新:我知道不推薦這樣做,它只是為了測試目的而做的)

樣品(更新):

這些是拋出該語法錯誤的供應商文件示例。 在所有這些(以及更多)中,數組文件的最后幾行都被指出為原因。 如果我刪除尾隨逗號,錯誤會繼續查找包含尾隨逗號的下一個供應商文件。

來自/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 設置上以某種方式運行它正在觸發它。

看起來作曲家沒有使用 PHP 7.2(或更高版本)。 您可以通過在命令行上運行php -v來測試它。 要查看您是否安裝了 PHP 7.2,您至少應該能夠在較新版本的 ubuntu 上執行php7.2

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM