Во время прохождения курса "Практическая Symfony" я столкнулся с странной ошибкой.
Я установил Debian Squeeze на машине VMWare 6.5.5. Он поставляется с 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), это работает, - преобразовать виртуальную машину в VirtualBox и проделать то же самое с общей папкой, все работает, - понизьте версию PHP до 5.2.6 (с lenny), он работает.
Я помню, что некоторое время назад у меня была такая же проблема с кодом PHP, сгенерированным Smarty. Поскольку он был автоматически сгенерирован 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: чтобы прояснить ситуацию, я протестировал следующие комбинации, чтобы сузить проблему:
В каждом случае я использую одни и те же исходные файлы (но для ext4, потому что у меня не было другого выбора, кроме как скопировать их). У меня не получается комбинировать жирные элементы. Если я поменяю один из них, все будет нормально. Я также попытался использовать open-vm-modules вместо предоставленных инструментов vmware и построить установку Debian с нуля вместо использования моего собственного автоматизированного сценария, но ни один из них ничего не изменил.