Windows」タグアーカイブ

Windows環境のComposerを複数PHPバージョンで使い分ける

Windows環境におけるPHP複数バージョン導入は比較的簡単です。例えばCドライブ配下に複数のPHPをzip展開、php.iniの設定を行うだけでOKです。

c:\php\php56\php.exe
c:\php\php70\php.exe
c:\php\php71\php.exe

実際に使う際はこの中からデフォルトとして使うバージョンに環境変数を通しておきます。

c:\php\php56\php.exe
c:\php\php70\php.exe ←環境変数を通してデフォルトで使われるPHPにしておく。
c:\php\php71\php.exe

例えばPHPのビルトインWebサーバーを使う際、デフォルトで使うバージョン以外を使いたいプロジェクトではフルパスで別パスのphpを起動してやればいいです。

c:\php\php71\php.exe -S localhost:8080

ここで、Composerが問題になってきます。WindowsにインストールしたComposerは環境変数に設定されたデフォルトのPHPで実行されるので、PHP 7.1を使っているプロジェクトでPHP 7.1を求めるライブラリを導入したい場合などに、ComposerのチェックでPHPのバージョンが足りないと言われエラーになってしまいます。また、適切にcomposer.jsonが設定されていなければPHP 5.6のプロジェクトで7.0が必須のライブラリをインストールしてしまうかもしれません。

このComposerコマンドの実行ファイルは実際にはバッチファイルになっています。このファイルはインストール時に設定を変えていなければ

C:\ProgramData\ComposerSetup\bin

にインストールされています。
(コマンドプロンプトであれば where コマンドでコマンドのインストール先が分かります)

中に記載されているのは

@ECHO OFF
php “%~dp0composer.phar” %*

だけですので、このファイルを複製し

@ECHO OFF
c:\php\php71\php.exe “%~dp0composer.phar” %*

のようにしてあげれば、PHP 7.1で起動するComposerコマンドを作る事が出来ます。

PHP 7.1のプロジェクト上でComposerコマンドを利用する際はcomposerコマンドではなく

composer_php71.bat install

のように利用すればOKです。

なお、Composerがプロジェクトごとではなくグローバルにインストールするパッケージについては全てのプロジェクトに影響が及びますので、その点はご注意ください。

ちなみに phpunit コマンドも同様にバッチファイルになっているので、同様に複数PHPバージョンのバージョンを用意しておくことができます。

USBコントローラドライバの更新でUSB DACが死んだ場合の対処

USB DACはホスト側のUSBコントーラのドライバ更新やWindows Update等によって、なぜか認識はされているものの音が鳴らない、一瞬だけ鳴るもののその後鳴らなくなる、といった状態に陥る事が有ります。何かしらの条件が有るのかもしれませんが、特定のメーカーの製品で起きるという訳ではないようです。OS側、もしくは利用しているUSBコントローラチップの問題なのかもしれません。

Amulech AL-9628D:私の環境で再現

TEAC UD-503
https://teac.jp/jp/product/ud-503/faq

2017年6月2日現在、Windows10 Creators Updateに対して全ての更新プログラムを当てた最新の状態にすると、ドライバーのインストールが正常にできないという現象が報告されています。 このため、共有モードで動作するアプリケーションの音声再生が行えなかったり、Windowsのサウンド設定が出来ない等の現象が発生するとの情報がございます。

他にもAmazon.co.jpのレビューでWindows Updateと共に認識しなくなった製品のレビューを見かけたりします。

Soundfort DS-100+ ハイレゾ USB DAC(96kHz/24bit, DSD64対応)ヘッドフォンアンプ搭載
https://www.amazon.co.jp/dp/B0070J4K4G

私の場合任意にUSBコントローラのドライバを更新した際に発生したのですが、「システムの復元」を行う事で復旧する事が出来ました。PCの環境によってはシステムの復元機能が無効化されている場合も有りますが、基本的に様々なトラブルがこれで解決できますので有効にしておくといいでしょう。