在我的生产服务器上运行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并重新安装它
>使用composer.phar而不是全局的
>做作曲家dumpautoload
>删除composer.lock文件
>删除所有缓存作曲家clearcache
>在生产中运行作曲家更新(绝望)
仍然得到相同的错误.你有什么想法 ?我的关键字用完了,无法在线查找类似的问题.
非常感谢
编辑:
也没提到网站工作正常..浏览时没有错误.
编辑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
在tada时刻之后.我提出了memory_limit和composer install没有错误,并且APP_DEBUG关闭了.
非常感谢大家的帮助.
至关重要的是要注意Laravel的日志不包含PHP的原始错误日志所做的所有相同信息.使用Laravel时,请始终在发生错误时检查原始PHP日志,并且可见输出和Laravel日志不会显示根本原因.
同样重要的是要注意Composer受其加载和处理的任何PHP文件的影响,这意味着与Composer完全无关的PHP文件中可能出现的任何类型的错误都会导致Composer失败,经常没有解释.但是,原始PHP日志中的根本原因几乎总是显而易见的.
堆栈跟踪顶部的空方法签名是不常见的.我怀疑如果你检查原始PHP日志,你会发现一些不寻常的条件,完全解释了composer.phar的突然终止.
请在下面查看,告诉我们你找到了什么.