Php 无法自我更新编写器

Php 无法自我更新编写器,php,composer-php,Php,Composer Php,我正试图更新作曲家没有任何运气 我所尝试的: $ composer self-update [无效辩论例外] 未定义命令“自我更新” [无效辩论例外] 未定义命令“自我更新” 正在阅读软件包列表。。。完成了构建依赖树的阅读 国家信息。。。Done composer已经是最新版本了。这个 以下软件包已自动安装,不再可用 必需:libntdb1 linux-headers-4.2.0-30 linux-headers-4.2.0-30-generic linux-image-4.2.0-30-ge

我正试图更新作曲家没有任何运气

我所尝试的:

$ composer self-update
[无效辩论例外] 未定义命令“自我更新”

[无效辩论例外] 未定义命令“自我更新”

正在阅读软件包列表。。。完成了构建依赖树的阅读 国家信息。。。Done composer已经是最新版本了。这个 以下软件包已自动安装,不再可用 必需:libntdb1 linux-headers-4.2.0-30 linux-headers-4.2.0-30-generic linux-image-4.2.0-30-generic linux-image-extra-4.2.0-30-generic python ntdb使用“apt-get” “自动删除”以删除它们。已升级0,新安装0,要删除0 还有10个没有升级

我正在尝试自我更新Composer,因为每次尝试时我都面临以下问题:

$ composer update
使用包信息更新加载composer存储库 依赖项(包括需要开发) [运行时异常] 无法在中加载包rmrevin/yii2 :[UnexpectedValueException]无法分析 版本约束v4.1.:无效的版本字符串“v4.1” [意外值异常] 无法分析版本约束v4.1。:版本字符串无效 “v4.1。”

如何解决此问题

我的PHP版本是:

php --version
composer --version
PHP 5.6.11-1ubuntu3.4(cli)版权所有(c)1997-2015 PHP集团 Zend Engine v2.6.0版权所有(c)1998-2015 Zend Technologies Zend OPcache v7.0.6-dev版权所有(c)1999-2015,由Zend Technologies提供

我的作曲版本是:

php --version
composer --version
作曲家版本@package\u branch\u alias\u version@(@package\u version@) @发布日期@


自从我发布了我的答案后,我学到了一种新的更简单的编程安装Composer的方法:

旧答案:
根据@JimL注释,我能够通过以下方式自我更新Composer:

  • 正在从软件包管理器(apt)卸载Composer
  • 我是按照说明书安装的
现在它可以正常工作了。

因为,您必须卸载PHP Composer并重新安装它。首先,执行:

sudo apt-get remove composer
然后,执行这些命令这里的校验和是针对Composer 1.10.13的,但在运行第一行时,您将获得最新的Composer(编辑此答案时为2.0.4),因此请务必签入

现在将文件composer.phar移动到路径中的目录(从):

并从任何目录执行
composer
。就这些


PS:如果您正在使用(或可能使用其他IDE),则必须先关闭它,然后再打开它。

安装最新版本:

删除当前的Composer版本,例如Ubuntu/Debian:

sudo apt-get remove composer
现在,转到并将脚本粘贴到命令行中。这可以确保您获得最新版本的Composer(在撰写本文时为v2.0.7)

像这样:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"
经过一段时间后,您可以进行更新,无需使用sudo前缀:

composer self-update
我已经安装了,它为我节省了很多


安装brew,然后
brew安装composer
安装composer。

您可以在设置PHP composer-
PHP composer设置时指定安装目录和文件名。PHP
如下:

sudo php composer-setup.php --install-dir=/usr/bin --filename=composer
通过以下步骤安装最新的Composer: 卸载Composer

sudo apt-get remove composer
php -r "unlink('composer-setup.php');"
运行以下命令

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '8a6138e2a05a8c28539c9f0fb361159823655d7ad2deecb371b04a83966c61223adc522b0189079e3e9e277cd72b8897') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
在/usr/bin目录中安装Composer,以便在任何地方运行Composer

sudo php composer-setup.php --install-dir=/usr/bin --filename=composer
composer self-update
删除安装程序

sudo apt-get remove composer
php -r "unlink('composer-setup.php');"
检查或自我更新

sudo php composer-setup.php --install-dir=/usr/bin --filename=composer
composer self-update

如果您有旧版本的Composer,则需要遵循以下命令:

composer-V
sudo-apt-remove作曲家
cd/tmp
wgethttp://getcomposer.org/download/1.10.5/composer.phar
php composer.phar-V
sudo mv composer.phar/usr/bin/composer
sudo chmod 750/usr/bin/composer
作曲家-V


我建议您卸载它并安装(即不使用apt或任何软件包管理器),您尝试过调试这个问题吗?你最初是如何安装composer的?这对我来说很有效,尽管“官方文档”有点混乱。如果你有Ubuntu 18.04,你可能会发现官方安装方法有一些问题。签出官方文档的问题是,该过程不允许使用常规操作系统更新自动更新Composer。在最后一个取消链接步骤之后,我做到了:sudo php composer-setup.php--install dir=/usr/bin--filename=composer最新版本的校验和不正确。第二个命令删除composer-setup.php,第三个命令失败,因此您确实需要遵循文档中的命令,因为每个新版本都有不同的散列(命令的第二行)并且这个答案中的命令对编辑和审阅者无效:“(大写字母“C”)是专有名词,而不是普通名词(在本文中)。如果超时,我该怎么办?@Black使用vpn确保这不是您的ISP问题不可能。我已经在一个vpn后面,只能通过此vpn访问服务器。您是否打开?防病毒软件或任何工作人员阻止了此网站?您确定php安装为环境应用程序吗?最新的哈希可以在我获取“brew未找到”时找到在运行此命令之前,您必须先安装brew。请参阅“请勿复制现有答案”-给定的步骤与一年前发布的步骤完全相同,并且您的答案不会添加任何新信息。这些信息没有重复。他们有不同的执行方法,但他们的做法不正确。请分享更多详细信息关于这一点-据我所知,A1Gard使用相同的命令。如果其他答案有错误,你应该解释为什么你的答案更好。他们在删除composer设置之前没有在/usr/bin中安装它,这就是为什么它不会成为全局性的。为什么这样的文件应该出现在
/usr/bin
?根据,
/usr/bin
不应用于通过包管理器以外的任何其他方式安装的二进制文件