运行作曲家时的麻烦
Posted
技术标签:
【中文标题】运行作曲家时的麻烦【英文标题】:trouble when running composer 【发布时间】:2016-04-09 04:48:20 【问题描述】:在我的 Symfony 项目中,运行composer update/install
命令时出现一些错误:
这是我运行composer时出现的错误:
致命错误:允许的内存大小为 1073741824 字节已用尽(已尝试 分配 524288 字节)在 phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Util/RemoteFilesystem.php 在第 189 行
如您所见,我以管理员身份运行提示命令,但即使我以非管理员身份运行命令,也会发生同样的错误。
我还检查了页面 here 以设置他们建议我运行 composer 的更改而不会遇到麻烦。
我在 Windows 10 上并为我的项目使用 wamp 服务器。
所以在我的 php.ini 中我写了这一行:memory_limit = 2G
为了确定,我重新启动了 wamp 等我的电脑。当我运行命令php -r "echo ini_get('memory_limit').PHP_EOL;"
时,它总是显示128M
。
如果我运行composer diagnose
命令,这就是我从提示命令得到的结果:
正如您在此处看到的,composer 在我的 composer.json 上显示一个错误。
这是我的composer.json
文件:
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload":
"psr-4": "": "src/"
,
"minimum-stability": "dev",
"prefer-stable": true,
"require":
"php": ">=5.3.9",
"symfony/symfony": "2.7.*",
"doctrine/orm": "^2.4.8",
"doctrine/doctrine-bundle": "~1.4",
"symfony/assetic-bundle": "~2.3",
"symfony/swiftmailer-bundle": "~2.3",
"symfony/monolog-bundle": "~2.4",
"sensio/distribution-bundle": "~4.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "~2.0",
"friendsofsymfony/user-bundle": "~2.0",
"knplabs/doctrine-behaviors": "~1.1",
"friendsofsymfony/jsrouting-bundle": "^1.5",
"jms/serializer-bundle": "^1.1",
"sonata-project/seo-bundle": "^2.0",
"genemu/form-bundle": "2.2.*",
"elao/web-profiler-extra-bundle" : "~2.3@dev",
"maxmind/geoip": "dev-master",
"a2lix/translation-form-bundle": "^2.0",
"ircmaxell/password-compat": "^1.0",
"sonata-project/translation-bundle": "^1.0",
"sp/bower-bundle": "^0.11.0",
"ensepar/html2pdf-bundle" : "~2.0"
,
"require-dev":
"sensio/generator-bundle": "~2.3",
"doctrine/doctrine-fixtures-bundle": "^2.3"
,
"scripts":
"pre-install-cmd": [
"BetonDirect\\EntityBundle\\HerokuDatabase::populateEnvironment"
],
"post-install-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
],
"post-update-cmd": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
]
,
"config":
"bin-dir": "bin"
,
"extra":
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"symfony-assets-install": "hard-copy",
"incenteev-parameters":
"file": "app/config/parameters.yml",
"env-map":
"database_driver": "DATABASE_DRIVER",
"database_host": "DATABASE_HOST",
"database_port": "DATABASE_PORT",
"database_name": "DATABASE_NAME",
"database_user": "DATABASE_USER",
"database_password": "DATABASE_PASSWORD"
,
"branch-alias":
"dev-master": "2.7-dev"
我也在我的 wamp 中禁用了服务器 xdebug zend 扩展,但它也不起作用(当我更改 memory_limit 时出现同样的问题,没有任何变化)。
如果您有一些问题,我很感激。
【问题讨论】:
您真的需要将minimum-stabilitiy
选项设置为dev
吗?这样做需要 Composer 的依赖解析器考虑更多版本,这会大大增加内存使用量。
您确定为 PHP CLI 更改了 php.ini 吗?通常有两种独立的配置,一种用于 Web 服务器,一种用于 CLI。
@JimL 我已经在 wamp 的两个 php.ini 中将 memory_limit
更改为 2G,例如在 C:\wamp\bin\php\php5.5.12
和 C:\wamp\bin\apache\apache2.4.9\bin
中。您认为没有正确的文件?
也许,运行php --ini
以确保
如果只有一些软件包您想要(或必须)使用它们的开发版本,您仍然可以在这些软件包的版本号后缀@dev
(或任何其他稳定性标志) .这将迫使 Composer 只考虑这些包的开发版本,而对其他所有包使用稳定版本。
【参考方案1】:
你正在编辑错误的 php ini
要找出您必须为 cli 编辑哪个 php.ini
在cmd中输入php -i
然后搜索php.ini
或放置echo phpinfo()
在第 180 行的 RemoteFilesystem.php 或其他任何内容中,并在标准输出中搜索 php.ini
【讨论】:
不仅这不能回答问题。但是已经在 cmets 中提出了建议(应该如此)。 我认为正确的答案是,“你编辑了错误的 php 配置”这是一个如何找到正确的想法 好吧,我们可以争论什么应该是评论和什么应该是答案的语义。我不是 Meta 专家。不过有两件事是显而易见的:1. 你没有那样写你的答案。即使在您编辑了答案之后。 2.在您发布答案之前,OP已经建议并回复了您的“解决方案”。我觉得这足以投票否决答案。如果您不同意,我很抱歉。我不是刻薄的意思。我只争取更好的 SO,让 OP 得到适当的答复,但下一个搜索答案的人可能会找到有用的信息,并正确呈现。 @SimpleAnecdote - 所以想想未来的人正在寻找答案。他们可以阅读这个(希望很快被接受)答案并快速确定问题。或者他们可以通过 10 个(大部分是不相关的)cmets 来挑选需要做的事情。你更愿意做什么?当然,他应该更新他对 php --ini 的答案,但他所拥有的工作。 除了他没有在 cmets 中回答,当他发布他的答案时,该方法似乎不起作用。直到后来,OP 才发现这确实是要检查的命令。此外,至少现在有上下文。所以现在很好(ish),因为他不是解决问题的人。【参考方案2】:您好像安装了 32 位 PHP 版本的 Windows,这里的内存限制是 2GB。你可以安装 64bit PHP 版本,内存限制为 4GB 应该足够了。
这是一个教程:
http://sebastianviereck.de/en/Windows-composer-update-fatal-error-allowed-memory-size-of-1610612736-bytes-exhausted/
【讨论】:
【参考方案3】:这是 Windows 10 中的解决方案
php -d memory_limit=-1 C:/ProgramData/ComposerSetup/bin/composer.phar update
【讨论】:
以上是关于运行作曲家时的麻烦的主要内容,如果未能解决你的问题,请参考以下文章