背景:使用我自己的克隆(https://github.com/outofcontrol/Laravel4-Vagrant/tree/vmware64),我可以无错误地启动一个带有VirtualBox的功能齐全的Laravel VM。使用克隆的稍作修改的版本(https://github.com/outofcontrol/Laravel4-Vagrant/tree/vmware64仅在流浪者文件中链接VM Box,并将COMPOSER_HOME = / home / vagrant添加到/ etc / environment,因为最初是警告,所以),我遇到了一个奇怪的错误。
VMware box下载,安装并可以通过'vagrant ssh'访问。所有模块都可以运行到laravel_app。无论是直接从框中手动运行“ sudo composer更新”,还是由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更新,运行apt-get升级,很多谷歌搜索。
我已经验证了在可用的VirtualBox VM和VMware VM上Helper.php文件是相同的。
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
最初,我认为其他版本的人偶可能会引起问题,但是手动运行时会出现相同的错误,我有些迷路了。有人会建议我下一步尝试吗?
编辑:起初,我认为这个问题与流浪汉和/或木偶有关。进一步的测试表明,仅在VMware中安装VM机器,然后手动安装并尝试安装Laravel会产生相同的错误。
这个问题以前已经问过,我终于找到了!其他帖子中没有解决方法,但请参考并关闭此循环:
PHP syntax error when files are added to VMware host from guest
至少如果您使用的是Virtualbox,则sendfile -kernel -call中存在一个错误,可能会导致此问题和其他类似的问题。
我的解决方案是将供应商移到共享文件夹之外,例如/ home / vagrant /,然后符号链接目录(从共享文件夹):
mkdir -p ~/vendor
ln -sf ~/vendor