尝试清除我的 Symfony 项目缓存时出现语法错误


Syntax error when trying to clear my Symfony project cache

当我尝试清除Symfony2.8项目的缓存时,出现以下错误:

[Symfony''Component''Debug''Exception''FatalErrorException] parse 错误:语法错误,意外的"["

这是更多的 deParse 错误:

语法错误,意外的"[" /home/jack/html/fc/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php 在第 90 行

我昨天将我的 Symfony2.7 升级到 2.8,现在我正忙于修复弃用以使其为版本 3 做好准备。我只是想不时清除缓存,但我只是收到此错误。

我使用了这个命令:

php app/console cache:clear

运行命令时 CLI 使用的 PHP 版本可能存在问题。

该错误来自使用 [] 作为数组声明。
这个简短的语法是在 PHP 发布其 5.4 版本时引入的。

在 Symfony 2.7 全新安装中,导致错误的行如下所示:

/**
 * @var 'Doctrine'Common'Proxy'ProxyDefinition[]
 */
private $definitions = array();

在 Symfony 2.8 中:

/**
 * @var 'Doctrine'Common'Proxy'ProxyDefinition[]
 */
private $definitions = [];

错误也不能来自其他地方。

如果您的 CLI 版本确实是 5.6,您应该能够从 bash 运行以下内容:

php -r '$array = []; var_dump($array);'
// output: array(0) {}

如果您没有收到任何错误,则您的项目中存在某些内容,通过禁用某些功能与您的实际PHP版本冲突。

否则,您有两种选择:

  • 降级原则
  • 升级 PHP

我希望这能澄清真正的问题。