cba*_*nar 5 php syntax-error composer-php
我跑Ubuntu 16.04
,PHP 7.2.29
和Composer 1.10.5
。我正在尝试更新 acomposer update
但是当它开始更新列出的包时,最终会到达数组中带有尾随逗号的包,这开始抛出语法错误。
PHP Parse error: syntax error, unexpected '' => ' (T_ENCAPSED_AND_WHITESPACE) in /var/www/vendor/yiisoft/extensions.php on line 52
Run Code Online (Sandbox Code Playgroud)
我试图直接在包(供应商目录)中更正这些错误,这确实允许我继续前进......除了错误永远不会停止!(更新:我知道不推荐这样做,它仅用于测试目的)
这些是抛出该语法错误的供应商文件示例。在所有这些(以及更多)中,数组文件的最后几行被指出是原因。如果我删除尾随逗号,错误会继续查找包含尾随逗号的下一个供应商文件。
样品来自 /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',
),
),
);
Run Code Online (Sandbox Code Playgroud)
样品来自 /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',
);
Run Code Online (Sandbox Code Playgroud)
样品来自 /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'),
);
Run Code Online (Sandbox Code Playgroud)
据我了解,尾随逗号是一种相当普遍的做法,不会在 PHP 中引起任何问题。
谁能告诉我发生了什么或者我接下来可以调查什么?
我想正在安装的程序包不应该问题,因为这似乎是一个PHP宽的错误,但以防万一,这是一个旧版本的Craft CMS 3.0.34
,运行上Yii 2.0.15.1
。我正在努力更新此版本,但由于这些问题我无法更新。然而,抛出错误的软件包各不相同......我的意思是......在放弃那场愚蠢的战斗之前,我编辑了大约 6 个不同供应商的文件。
收到一些反馈后,我发现在云服务器上运行相同的设置没有描述的问题。表明以某种方式在 VirtualBox/Vagrant 设置上运行它正在触发它。
小智 -2
看起来 Composer 没有使用 PHP 7.2(或更高版本)。您可以通过php -v
在命令行上运行来测试这一点。要查看您是否安装了 PHP 7.2,您至少应该能够php7.2
在较新版本的 ubuntu 上执行此操作。
希望能帮助到你