在学习“Practical Symfony”课程时,我遇到了一个奇怪的错误。
我在 VMWare 6.5.5 机器上安装了 Debian Squeeze。它带有 PHP 5.3.3,我使用的是 Symfony 1.4。源文件在主机上,我使用共享文件夹功能(vmhgfs mount)访问它们。
现在,当我尝试以下命令时,出现错误:
php symfony doctrine:build --model
php symfony doctrine:build --sql
错误:
PHP Parse error: syntax error, unexpected ')' in /var/www/appli/lib/model/doctrine/base/BaseJobeetJob.class.php on line 144
有趣的是,当我: - 在没有共享文件夹的情况下(例如在 ext3 分区上)做同样的事情,它可以工作, - 将 VM 转换为 VirtualBox 并在共享文件夹上做同样的事情,它可以工作, - 降级PHP 到 5.2.6(来自 lenny),它可以工作。
我记得前段时间 Smarty 生成的 PHP 代码也遇到过同样的问题。由于它是自动生成的 PHP 并且可以随意重新生成,所以我在本地目录中生成了它。但我认为这不适用于 Doctrine 生成的文件。
有没有人知道发生了什么以及我该如何解决?
编辑:这是第 144 行的代码:
public function setUp()
{
parent::setUp();
$this->hasOne('JobeetCategory', array(
'local' => 'category_id',
'foreign' => 'id',
'onDelete' => 'CASCADE'));
$timestampable0 = new Doctrine_Template_Timestampable();
$this->actAs($timestampable0);
}
} // Line 144 here.
它实际上是文件的结尾......
编辑#2:为了清楚起见,我已经测试了以下组合以缩小问题范围:
- 虚拟机软件:VMWare Workstation 6.5.5 / VirtualBox 4.0.8
- PHP版本:5.3.3 / 5.2.6,
- 挂载类型:vmhgfs(或带有 VirtualBox 的 vboxsf)/ext4(本地)/cifs(又名 Windows 共享)。
在每种情况下,我都使用相同的源文件(但对于 ext4,因为我别无选择,只能复制它们)。组合粗体项目时失败。如果我改变其中任何一个,一切都会好起来的。我还尝试使用 open-vm-modules 代替提供的 vmware 工具,并从头开始构建 Debian 安装,而不是使用我自己的自动化脚本,但两者都没有改变任何东西。