Windows上でcomposer使うためのアレコレ

DockerをVirtualBox介して使わなくなったから、直接操作する必要が出てきた今日この頃。
Windows環境でcomposerを使うとなると、カンタンでもなくPHPやら.bat作るやら色々ある。
Windowsから直接PHPなんて、たまにしか使わないから、困ってしまった。


基本的にcomposer系のメモはここにある。

WindowsにPHP入ってないor古い! ので新しいPHPをインストール

composer、PHP入ってないと使えない。

php -v

して、反応あれば入っているけど、入っていても、古かったら使えない。

インストール

PHP: Downloads』の『Windows downloads』からの遷移先である
PHP For Windows』にてPHPをダウンロード。
『一番新しいバージョン』を選んでおけば問題ないと思う。
『VC15 x64 Thread Safe』のなかから『Zip』を落とす。
ダウンロードしたZipファイルを、解凍して都合のいいとこ(大概『c:\php』)に置く。
今回は『c:\php』に置くとする。

パス指定なしでphpコマンドを使う設定する

いちいちパス指定するのもめんどくさいから、ここにあるよっていうパスを通しておく。
『コントロールパネル』→『システムとセキュリティ』→『システム』→『システムの詳細設定』で『システムのプロパティ』を開き『環境変数(N)...』を押す。
ユーザのでもシステムでもどちらでもいいから『Path』に、先程解凍して置いた場所を追加する。

php -v

で今回インストールしたバージョンが表示されたら成功で、インストール完了となる。

extension(拡張)を有効化しておく

php.iniを作って、extension(拡張)を色々有効にしておかないと、後で困る。
composer使うために『openssl』
laravel使うために『mbstring』
を有効化しておく。

php.iniの場所が解らない場合、コマンドツールから『php --ini』と打ち込む。
▼こんな感じで、この場合は『c:\windows』が置く場所。

> php --ini
Configuration File (php.ini) Path: C:\WINDOWS
Loaded Configuration File:         (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

※php.iniがない場合『php.ini-development』をコピーし、名前を『php.ini』にする。『php.ini-development』の場所はphp.exeある場所。

php.iniから上記に該当するextensionを探して、有効化する。

;extension=mbstring
(略)
;extension=openssl

先頭にある『;』が『コメントアウトの文字』なので、消す。
結果、こんな感じになる。

extension=mbstring
(略)
extension=openssl

composerをインストール! でも公式インストーラーは使えない…

Composer公式に、composerインストーラはあるのだけど、いざ実行するとWindowsがインストールを拒否する。
前は使えたんですけどね、ココ数年はDefender等に引っかかる。
『Command-line installation』でのインストールも試したが『composer-setup.php』消えちゃうでやんの!
不正ってか!?………ツライ…
理由は『Composerをインストールするなら公式ドキュメントを見よう! - Qiita』を観たら理解出来るが、何かもう…ねぇ?
なので、諦めてphpで入れる。

インストール

PowerShellなり、コマンド実行出来るツールにて、ここにComposer起きたいなってトコまで移動。
今回の場合は、下記となる。

cd c:\php

cdコマンドで移動し、下記を実行する。

php -r "readfile('https://getcomposer.org/installer');" | php

PHPエラーで、composerを入れられない!

PHPのエラーで、インストール実行出来ない場合は、php.iniの見直しが必要。

Warning: readfile(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1

Warning: readfile(https://getcomposer.org/installer): failed to open stream: No such file or directory in Command line code on line 1

php.iniの設定で『httpsが実行できない状態』になっている。

上で書いたphp.iniにて、opensslのextensionを探して、有効化する。

;extension=openssl

※前は『php_openssl.**』だった。『**』は実行環境にもよる拡張子。winなら.dll、linuxなら.so
先頭にある『;』が『コメントアウトの文字』なので、消す。
結果、こんな感じになる。

extension=openssl

これでhttpsアクセス云々のエラーは出ないハズなので、再度先程の『php -r 云々』実行する。

composerを使う! しかしcomposerコマンドが使えない!

インストール完了で、すぐに使おうとしたら、そうはいかない。

>composer -V
composer : 用語 'composer' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。

コマンドがないって怒られた。

だってwindowsだもの。『.phar』なんて実行形式じゃないもの。
この状態で実行するとなると

php composer.phar -V

となる。やってられない!

composerコマンドを使えるようにする

「Windowsの実行出来る形式じゃないなら、Windowsが実行出来る形式にすればいいじゃない!」
という発想で『composer.bat』を作る。
何とこれ、PowerShellでは実行出来ない。コマンドプロンプトとか使ってください。
phpの実行ディレクトリまで移動して

echo @php "%~dp0composer.phar" %*>composer.bat

これで

>composer -V

でバージョン見れたら成功。

homeの位置を変更しておく

composer global config --list

これの『home』が『C:/Users/【ユーザ名】/AppData/Roaming/Composer』になっている。
うっかり無指定でinitとかすると、ここに出来ちゃう罠である。
気に入らないので変更する。

変更するには、環境変数を追加する必要がある。
『コントロールパネル』→『システムとセキュリティ』→『システム』→『システムの詳細設定』で『システムのプロパティ』を開き『環境変数(N)...』を押す。
『システムの環境変数(S)』にて『新規』で『変数名』で『COMPOSER_HOME』を作る。
『変数値』を変更したい場所に書き換える。これで完了。
PowerShellを再起動して、先のコマンドを実行すると変わっていることが確認出来る。

Dockerのbuild時に『Release file for ~ is not valid yet』

Windows側と仮想環境側の時計の時間がずれているからなんだけど…
何度Restartしても治らなくて諦めた。
諦めて仮想環境で実行してほしい
解決できるなら教えてほしい…

コメント

タイトルとURLをコピーしました