自从昨天开始我遇到了一个非常奇怪的问题。在我的生产服务器上运行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
时,我没有得到任何错误。所以我尝试了:
- 进行
composer selfupdate
- 删除composer并重新安装它
- 使用composer.phar而不是全局的composer
- 执行
composer dumpautoload
- 删除
composer.lock
文件 - 删除所有缓存
composer clearcache
- 在生产环境下运行
composer update
(绝望)
谢谢! 编辑: 还没提到网站正常工作..浏览时没有错误。 编辑2: 根据@marcanuy的建议,我尝试删除供应商目录。在此期间,我还清除了编译和composer缓存。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关闭。非常感谢大家的帮助。
/usr/local/bin/php
,而不是仅使用php
(这只是示例路径,您需要放置您的路径)。另外,请确保您的服务器已安装所有这些扩展。 - Sh1d0wstorage/logs
)以获取更详细的错误消息? - Sh1d0w