php - Composer 安装在 Laravel 5 上崩溃(仅限生产环境)

标签 php laravel composer-php laravel-5 dev-to-production

从昨天开始,我遇到了一个非常奇怪的问题。 在我的生产服务器上运行 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 手动,我没有收到任何错误。

所以我试过了:

  1. 执行 Composer self 更新
  2. 删除 Composer 并重新安装
  3. 使用 composer.phar 而不是全局的
  4. 执行 composer dumpautoload
  5. 删除 composer.lock 文件
  6. 删除所有缓存 composer clearcache
  7. 在生产环境中运行 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/

相关文章:

php - 每月租金发票和付款数据库架构

php - HTTP欺骗?

Laravel HTTP 客户端发布请求不起作用

laravel - 如何解决 "Your requirements could not be resolved to an installable set of packages"错误?

javascript - 对于非 PHP 依赖项(如 jQuery、CSS 工具等),我应该使用还是避免使用 Composer?

php - 如何手动使用 composer, artisan ...(Laravel) php 命令

php - SQL PHP : How to select some column from sql database and display it in PHP/HTML generated table in descending order where condition is. ..

java - 使用 php 传递正在运行的 jar 命令

laravel - Eloquent 中的重复 key 更新

Laravel 5.3 在路由文件 web.php 中获取请求值