0

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

4

2 回答 2

1

At least if you are using Virtualbox, there is a bug with sendfile -kernel -call that might cause this and other problems that are similar.

My solution would be to move the vendor outside the shared folder, e.g. /home/vagrant/ and then symlink the dir (from the shared folder):

mkdir -p ~/vendor
ln -sf ~/vendor
于 2019-12-21T21:26:01.913 回答
0

这个问题以前也有人问过,终于找到了!其他帖子中没有解决方案,但供参考并关闭此循环:

将文件从客户机添加到 VMware 主机时出现 PHP 语法错误

于 2013-11-07T19:52:36.097 回答