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

Laravel composer更新在VMware提供程序上产生语法错误、意外的文件结尾,vmware,virtualbox,composer-php,vagrant,puppet,Vmware,Virtualbox,Composer Php,Vagrant,Puppet,背景: 使用我自己的clone(),我可以毫无错误地使用VirtualBox创建一个功能完整的Laravel VM。使用稍微修改过的克隆版本(仅链接vagrant文件中的VM框,并将COMPOSER_HOME=/HOME/vagrant添加到/etc/environment,因为这最初是一个警告),我得到了一个奇怪的错误 VMware box可通过“vagrant ssh”下载、安装和访问。所有模块运行到laravel_应用程序。无论我是直接从框中手动运行“sudo composer updat

背景: 使用我自己的clone(),我可以毫无错误地使用VirtualBox创建一个功能完整的Laravel VM。使用稍微修改过的克隆版本(仅链接vagrant文件中的VM框,并将COMPOSER_HOME=/HOME/vagrant添加到/etc/environment,因为这最初是一个警告),我得到了一个奇怪的错误

VMware box可通过“vagrant ssh”下载、安装和访问。所有模块运行到laravel_应用程序。无论我是直接从框中手动运行“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可能会导致问题,但后来手动运行会出现相同的错误,我有点迷路了。有谁能建议我下一步该怎么做


编辑:最初我认为这个问题与流浪汉和|或木偶有关。进一步的测试表明,只需在VMware中安装VM机器,然后手动安装并尝试安装Laravel,就会产生相同的错误。

以前有人问过这个问题,我终于找到了!其他帖子中没有决议,但为了参考和关闭此循环:


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

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


如果我将cd放入VM/var/www并运行“php artisan”,则会出现上述错误。如果我将cd刻录到主机上的同一文件夹(共享自)并运行“php artisan”,则不会出现任何错误。这表明PHP安装是在虚拟机上进行的。Vagrant VMware precise64_VMware box不区分大小写!Arg。我猜这就是问题所在。可能是重复的感谢,经过一天的尝试,它在这里解决了!使用MacOS Catalina,Homestead更新。带有Php7.1的Laravel 5.6
mkdir -p ~/vendor
ln -sf ~/vendor