从昨天开始,我遇到了一个非常奇怪的问题。
在我的生产服务器上运行 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]
所以当 php artisan optimize
设置为运行时,错误似乎出现在 post-install-cmd
中......奇怪的是,当我运行所有post-install-cmd
手动,我没有收到任何错误。
所以我试过了:
- 执行
Composer self 更新
- 删除 Composer 并重新安装
- 使用 composer.phar 而不是全局的
- 执行
composer dumpautoload
- 删除
composer.lock
文件 - 删除所有缓存
composer clearcache
- 在生产环境中运行
composer 更新
(绝望)
仍然得到同样的错误。你有什么想法 ?我的关键字用完了,无法在线查找类似问题。
非常感谢
编辑:
也没有提到网站运行良好。浏览时没有错误。
编辑 2:
根据@marcanuy 的建议,我尝试删除供应商目录。同时,我还清除了编译缓存和作曲缓存。 Composer 重新下载/安装了所有内容。仍然得到同样的错误。
编辑 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 已关闭。
非常感谢大家的帮助。
最佳答案
您检查过原始 PHP 日志了吗?
重要的是要注意 Laravel 的日志不包含 PHP 的原始错误日志所包含的所有相同信息。使用 Laravel 时,当发生错误时始终检查原始 PHP 日志,可见的输出和 Laravel 日志没有揭示根本原因。
同样重要的是要注意,Composer 受其加载和处理的任何 PHP 文件的影响,这意味着与 Composer 完全无关的 PHP 文件中可能发生的任何类型的错误都可能导致 Composer 失败,往往没有解释。 但是,根本原因几乎总是在原始 PHP 日志中很明显。
堆栈跟踪顶部的空方法签名很不寻常。我怀疑如果您检查原始 PHP 日志,您会发现存在一些异常情况,这充分解释了 composer.phar
的突然终止。
接下来请检查那里并告诉我们您发现了什么。
关于php - Composer 安装在 Laravel 5 上崩溃(仅限生产环境),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30547524/