您的openssl扩展不支持SHA384,无法验证phar文件的完整性

时间:2019-03-04 12:13:31

标签: php composer-php

我在Windows 10上运行composer self-update时收到错误消息
这是完整的错误消息

     composer self-update
     Updating to version 1.8.4 (stable channel).
     Downloading (100%)


     [RuntimeException]
    SHA384 is not supported by your openssl extension, could not verify the phar file integrity

我正在跑步PHP 7.3.2 可能是什么问题?

6 个答案:

答案 0 :(得分:9)

手动更新作曲家:

wget -cO - https://getcomposer.org/composer-stable.phar > /usr/local/bin/composer

检查已安装的作曲家版本:

composer --version

答案 1 :(得分:2)

该错误表示您正在使用composer或更低版本的1.7.2。 您必须先卸载composer,然后安装composer1.7.3及更高版本。

答案 2 :(得分:1)

我在Windows机器上遇到了同样的问题。我刚刚从https://getcomposer.org/download/下载并安装了Composer,当我尝试运行php composer-setup.php时,它失败并显示“您的openssl扩展不支持SHA384”。

对我有用的解决方案是执行命令行安装(在同一站点上记录)。访问https://getcomposer.org/download/以获得最新的SHA。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c5b9b6d368201a9db6f74e2611495f369991b72d9c8cbd3ffbc63edff210eb73d46ffbfce88669ad33695ef77dc76976') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

答案 3 :(得分:0)

删除旧版本并安装最新版本的Composer,

删除旧版本: sudo rm -f /usr/local/bin/composer

下载安装程序: sudo curl -s https://getcomposer.org/installer | php

移动composer.phar文件: sudo mv composer.phar /usr/local/bin/composer

答案 4 :(得分:0)

您可以从https://getcomposer.org/下载最新版本,只需替换 composer 文件夹中的文件 composer.phar ,该文件就安装在Windows的Windows中 C:\ composer

答案 5 :(得分:-1)

FROM php:7.1-apache

....

ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /tmp
ENV COMPOSER_VERSION 1.8.4

RUN curl --silent --fail --location --retry 3 --output /tmp/installer.php --url https://raw.githubusercontent.com/composer/getcomposer.org/cb19f2aa3aeaa2006c0cd69a7ef011eb31463067/web/installer \
 && php -r " \
    \$signature = '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5'; \
    \$hash = hash('sha384', file_get_contents('/tmp/installer.php')); \
    if (!hash_equals(\$signature, \$hash)) { \
      unlink('/tmp/installer.php'); \
      echo 'Integrity check failed, installer is either corrupt or worse.' . PHP_EOL; \
      exit(1); \
    }" \
 && php /tmp/installer.php --no-ansi --install-dir=/usr/bin --filename=composer --version=${COMPOSER_VERSION} \
 && composer --ansi --version --no-interaction \
 && rm -f /tmp/installer.php

https://hub.docker.com/_/composer/