7

从昨天开始,我有一个非常奇怪的问题。在我的生产服务器上运行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]

所以似乎错误出现在post-install-cmd设置php artisan optimize为运行的时间......奇怪的是,当我post-install-cmd手动运行所有时,我没有收到任何错误。

所以我尝试了:

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

并且仍然得到同样的错误。你有什么想法 ?我的关键字用完了,无法在网上找到类似的问题。

非常感谢

编辑 :

也没有提到该网站运行良好。浏览时没有错误。

编辑 2:

根据@marcanuy 的建议,我尝试删除供应商目录。在此期间,我还清除了已编译和作曲家缓存。作曲家重新下载/安装了一切。并且仍然得到同样的错误。

编辑 3:

所以我把它缩小到这个。如果我将 APP_DEBUG 设置为 true,我不会收到错误消息...如果为 false,我会收到错误消息。知道为什么吗?

最后编辑:

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

[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

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

非常感谢大家的帮助。

4

2 回答 2

2

你检查过原始的 PHP 日志吗?

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

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

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

请接下来检查那里,让我们知道您发现了什么。

于 2015-06-02T13:41:11.593 回答
0

如果 APP_DEBUG 为真,则问题与您在优化框架以获得更好的性能中看到的有关,php artisan optimize而不是您需要在命令中使用选项。因此,要解决此错误,您需要将部分中的行从更改为composor.phar--forcecomposor.json"post-install-cmd""php artisan optimize""php artisan optimize --force"

于 2015-06-02T08:34:39.347 回答