提问人:cballenar 提问时间:4/12/2020 最后编辑:cballenar 更新时间:3/29/2023 访问量:1452
PHP 7.2 语法错误在 composer 更新时数组中的尾随逗号
PHP 7.2 syntax error on trailing comma in array on composer update
问:
我正在运行 、 和 .我正在尝试更新一个,但是当它开始更新列出的包时,最终会到达数组中带有尾随逗号的包,这开始引发语法错误。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
我试图直接在软件包(供应商目录)中纠正这些错误,这确实允许我继续前进......除了错误永远不会停止! (更新:我知道不建议这样做,它只是为了测试目的)
示例(更新):
这些是引发该语法错误的供应商文件的示例。在所有这些(以及更多)中,数组文件的最后一行都被指出为原因。如果我删除尾随逗号,则错误将继续查找包含尾随逗号的下一个供应商文件。
样品来源/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范围的错误,但以防万一这是针对旧版本的,运行在.我正在努力更新此版本,但由于这些问题,我无法更新。但是,抛出错误的软件包各不相同......我的意思是。。。在放弃那场愚蠢的战斗之前,我编辑了 ~6 个不同供应商的文件。Craft CMS 3.0.34
Yii 2.0.15.1
更新
在收到一些反馈后,我发现在云服务器上运行相同的设置没有描述问题。表明以某种方式在 VirtualBox/Vagrant 设置上运行它正在触发它。
答:
看起来 composer 没有使用 PHP 7.2(或更高版本)。
您可以通过在命令行上运行来测试这一点。
要查看您是否安装了 PHP 7.2,您还应该至少能够在较新版本的 ubuntu 上执行此操作。php -v
php7.2
希望对您有所帮助
评论