Composerを自動的にダウンロードする

Composerの公式なダウンロード方法

現在、Composerのダウンロード方法は、

にありますが、以下のようになっています。

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

ここで、composer-setup.phpのハッシュを比較して検証しており、ファイルが更新されるとハッシュ値も変わってしまうため、上記のコードではダウンロードできなくなります。

Composerのインストールを自動化していると、ファイルが更新されるたびに動かなくなってしまいます。

Composerの自動的なダウンロード方法

そこで、ハッシュ値のチェックをやめずに、Composerを自動的にダウンロードするためのスクリプトを書いてみました。

<?php

copy('https://getcomposer.org/installer', 'composer-setup.php');
$hash = trim(file_get_contents('https://composer.github.io/installer.sig'));

if (hash_file('SHA384', 'composer-setup.php') === $hash) {
    echo 'Installer verified';
} else {
    echo 'Installer corrupt';
    unlink('composer-setup.php');
    exit(1);
}

echo PHP_EOL;
passthru('php composer-setup.php');
unlink('composer-setup.php');

これで、ハッシュ値が変わっても大丈夫なはずです。

Date: 2016/06/25

Tags: php, composer