运行作曲家时的麻烦

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.12C:\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

【讨论】:

以上是关于运行作曲家时的麻烦的主要内容,如果未能解决你的问题,请参考以下文章

运行时的C程序

运行作曲家时禁用 xdebug

如何从任何地方运行作曲家?

在与当前目录不同的目录中运行作曲家

运行作曲家命令时有没有办法隐藏“资金”消息?

运行作曲家更新时出现内存错误