首页 > 解决方案 > 是否使用 sudo 何时执行“composer require”命令?

问题描述

通常,它会遇到Do not run Composer as root/super user! See https://getcomposer.org/root for details何时执行的问题sudo composer require somePackage

这是我安装 swiftmailer 的记录。
首先在 composer require somePackage没有sudo.

debian9@machine:~$ composer require "swiftmailer/swiftmailer:^6.0"
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

Installation failed, reverting ./composer.json to its original content.


  [RuntimeException]                                                           
  /home/debian9/vendor/doctrine/lexer does not exist and could not be created  
  .                                                                            


require [--dev] [--prefer-source] [--prefer-dist] [--no-progress] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--] [<packages>]...

让我们尝试使用 sudo。

debian9@machine:~$ sudo  composer require "swiftmailer/swiftmailer:^6.0"
Do not run Composer as root/super user! See https://getcomposer.org/root for details
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing doctrine/lexer (v1.0.1)
    Downloading: 100%         

  - Installing egulias/email-validator (2.1.6)
    Downloading: 100%         

  - Installing swiftmailer/swiftmailer (v6.1.3)
    Downloading: 100%         

egulias/email-validator suggests installing ext-intl (PHP Internationalization Libraries are required to use the SpoofChecking validation)
swiftmailer/swiftmailer suggests installing ext-intl (Needed to support internationalized email addresses)
swiftmailer/swiftmailer suggests installing true/punycode (Needed to support internationalized email addresses, if ext-intl is not installed)
Writing lock file
Generating autoload files

我很困惑,如果没有sudo,swiftmailer 无法安装,sudo会发生错误Do not run Composer as root/super user!

标签: composer-php

解决方案


您过去可能使用过 Composer sudo。这使某些目录vendor/归根目录所有,从而使您无法正常使用 Composer。

将整个vendor目录的所有权更改为您的 shell 用户,或完全删除该目录。(您需要以 root 身份执行此操作。)完成此操作后,您应该能够正常使用 Composer。


推荐阅读