背景:使用我自己的克隆(https://github.com/outofcontrol/Laravel4-Vagrant/tree/vmware64),我可以毫无错误地启动一个带有 VirtualBox 的功能齐全的 Laravel VM。使用克隆的稍微修改版本(https://github.com/outofcontrol/Laravel4-Vagrant/tree/vmware64仅在 vagrant 文件中链接 VM Box 并将 COMPOSER_HOME=/home/vagrant 添加到 /etc/environment最初是一个警告)我遇到了一个奇怪的错误。
VMware box 可以通过“vagrant ssh”下载、安装和访问。所有模块都运行到 laravel_app。无论我是直接从框中手动运行“sudo composer update”,还是 Vagrant/Puppet 运行它,都会出现以下错误:
$ sudo composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Generating autoload files
PHP Parse error: syntax error, unexpected end of file in /var/www/vendor/laravel/framework/src/Illuminate/Support/helpers.php on line 954
PHP Stack trace:
PHP 1. {main}() /var/www/artisan:0
PHP 2. require() /var/www/artisan:16
PHP 3. require() /var/www/bootstrap/autoload.php:17
PHP 4. ComposerAutoloaderInitc631e523d6ab3652395fbd23aa1064ba::getLoader() /var/www/vendor/autoload.php:7
Script php artisan clear-compiled handling the post-update-cmd event returned with an error
[RuntimeException]
Error Output: PHP Parse error: syntax error, unexpected end of file in /var/www/vendor/laravel/framework/src/Illuminate/Support/helpers.php on line 954
PHP Stack trace:
PHP 1. {main}() /var/www/artisan:0
PHP 2. require() /var/www/artisan:16
PHP 3. require() /var/www/bootstrap/autoload.php:17
PHP 4. ComposerAutoloaderInitc631e523d6ab3652395fbd23aa1064ba::getLoader() /var/www/vendor/autoload.php:7
update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--with-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [packages1] ... [packagesN]
在过去的几个小时里,我尝试了几个可能的修复,包括在 /var/www 上设置 chmod 777、在出现临时问题时重新启动、手动运行 apt-get update、运行 apt-get upgrade、大量谷歌搜索。
我已经验证 Helper.php 文件在工作的 VirtualBox VM 和 VMware VM 上是相同的。
Software versions on Virtualbox:
PHP 5.5.5-1+debphp.org~precise+2
Puppet v2.7.19
Software versions on VMware:
PHP 5.5.5-1+debphp.org~precise+2
Puppet v3.0.2
最初我认为不同版本的 puppet 可能会导致问题,但随后手动运行会出现相同的错误,我有点迷失了。有人对我下一步可能尝试什么有建议吗?
编辑:最初我认为这个问题与 Vagrant 和|或 Puppet 有关。进一步的测试表明,仅在 VMware 中安装 VM 机器,然后手动安装并尝试安装 Laravel 会产生相同的错误。