Laravel composer更新产生语法错误,VMware提供程序上的文件意外结束

问题描述 投票:0回答:2

背景:使用我自己的克隆(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会产生相同的错误。

vmware virtualbox composer-php vagrant puppet
2个回答
0
投票

这个问题以前已经问过,我终于找到了!其他帖子中没有解决方法,但请参考并关闭此循环:

PHP syntax error when files are added to VMware host from guest


0
投票

至少如果您使用的是Virtualbox,则sendfile -kernel -call中存在一个错误,可能会导致此问题和其他类似的问题。

我的解决方案是将供应商移到共享文件夹之外,例如/ home / vagrant /,然后符号链接目录(从共享文件夹):

mkdir -p ~/vendor
ln -sf ~/vendor
© www.soinside.com 2019 - 2024. All rights reserved.