Composer安装在Laravel 5上崩溃(仅限生产)

Joh*_*olf 7 php dev-to-production laravel composer-php laravel-5

从昨天开始,我有一个非常奇怪的问题.composer install在我的生产服务器上运行会导致此错误...请记住,我的本地服务器(Homestead VM)上没有任何错误.

Nothing to install or update
Writing lock file
Generating autoload files
Executing command (CWD): php artisan clear-compiled
Executing command (CWD): php artisan optimize
Generating optimized class loader
Compiling common classes
Script php artisan optimize handling the post-install-cmd event returned with an error



  [RuntimeException]
  Error Output:



Exception trace:
 () at phar:///home/site/public_html/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php:177
 Composer\EventDispatcher\EventDispatcher->doDispatch() at phar:///home/site/public_html/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php:91
 Composer\EventDispatcher\EventDispatcher->dispatchScript() at phar:///home/site/public_html/composer.phar/src/Composer/Installer.php:342
 Composer\Installer->run() at phar:///home/site/public_html/composer.phar/src/Composer/Command/InstallCommand.php:131
 Composer\Command\InstallCommand->execute() at phar:///home/site/public_html/composer.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257
 Symfony\Component\Console\Command\Command->run() at phar:///home/site/public_html/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:874
 Symfony\Component\Console\Application->doRunCommand() at phar:///home/site/public_html/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:195
 Symfony\Component\Console\Application->doRun() at phar:///home/site/public_html/composer.phar/src/Composer/Console/Application.php:146
 Composer\Console\Application->doRun() at phar:///home/site/public_html/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:126
 Symfony\Component\Console\Application->run() at phar:///home/site/public_html/composer.phar/src/Composer/Console/Application.php:83
 Composer\Console\Application->run() at phar:///home/site/public_html/composer.phar/bin/composer:43
 require() at /home/site/public_html/composer.phar:25


install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [--ignore-platform-reqs] [packages1] ... [packagesN]
Run Code Online (Sandbox Code Playgroud)

因此,似乎错误出现在post-install-cmd何时php artisan optimize设置为运行...奇怪的是,当我post-install-cmd手动运行时,我不会得到任何错误.

所以我尝试过:

  1. 做一个 composer selfupdate
  2. 删除composer并重新安装它
  3. 使用composer.phar而不是全局的
  4. composer dumpautoload
  5. 删除composer.lock文件
  6. 删除所有缓存 composer clearcache
  7. composer update在生产中运行(绝望)

仍然得到相同的错误.你有什么想法 ?我的关键字用完了,无法在线查找类似的问题.

非常感谢

编辑:

也没提到网站工作正常..浏览时没有错误.

编辑2:

根据@marcanuy建议,我尝试删除供应商目录.在此期间,我还清除了编译和编写器缓存.Composer重新下载/安装了所有内容.仍然得到相同的错误.

编辑3:

所以我把它缩小到了这个范围.如果我将APP_DEBUG设置为true,则不会出现错误...如果为false,则会收到错误.知道为什么吗?

最终编辑:

感谢Ben Johnson向我指出了正确的方向......我检查了我的原始PHP日志,是的,它们与laravel日志不同(duh,应该想到这一点).我在那里看到了一个奇怪的内存错误,与上面错误堆栈中的文件无关:

[02-Jun-2015 14:05:01 Europe/Paris] PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 64 bytes) in /vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php on line 169
Run Code Online (Sandbox Code Playgroud)

在tada时刻之后.我提出了memory_limit并且composer install没有错误地运行,并且APP_DEBUG关闭了.

非常感谢大家的帮助.

Ben*_*son 2

您检查过原始 PHP 日志吗?

值得注意的是,Laravel 的日志并不包含与 PHP 的原始错误日志相同的所有信息。使用 Laravel 时,请务必在发生错误时检查原始 PHP 日志,并且可见输出和 Laravel 日志不会揭示根本原因。

同样重要的是要注意,Composer 会受到其加载和处理的任何 PHP 文件的影响,这意味着与 Composer 完全无关的 PHP 文件中可能发生的任何类型的错误都可能导致 Composer 失败,通常没有解释。然而,根本原因几乎总是在原始 PHP 日志中显而易见。

堆栈跟踪顶部的空方法签名是不寻常的。我怀疑如果您检查原始 PHP 日志,您会发现存在一些异常情况,这充分解释了composer.phar.

请接下来检查并告诉我们您发现了什么。