WSLにPHP開発環境を整える

今更PHPを習得しようとしています。自分の好きに組み上げてよいならPerlなのですが、世間的には需要が少なさそうです。ということで、自分のPCにはWSL(Windows Subsystem for Linux)を有効にしていて、Ubuntuが入っています。これにPHP開発環境をインストールしようという話です。

といっても、インストール時のログや画像キャプチャを採っていないので、インストールで参照したサイトページの紹介に終始しますです。

WSLの環境を整える

まず、WSLを有効にして、Microsoft Storeより使いたいLinuxパッケージをインストールします。今からだとWIndows 10 May 2020 Updateの時期なのでWSL2が使えるようになるのですが、現時点(6月初旬)ではほとんど1909なのでWSL2はそのうちにということにします。

Microsoft Storeには何種類かWSL用Linuxパッケージが登録されているのですが、記事が最も多いと思われるUbuntu(Ubuntu 18.04 LTS)を選びました。運用しているサーバーがCentOSなのだから合わせた方がとも思いますが、Microsoft StoreにリストされるCentOSパッケージはインストールに躊躇しますね。だって配布元がよくわからないから。

WSLが使えるようになったら、気になるのはターミナルソフト。用意されている標準コンソールはWindows 10 コマンドプロンプトそのもので使いづらい。代替できるものを探してウロチョロしてみたら、「wsltty」というのがありました。Windows Terminalが正式リリースされましたが、一番の愛用は今のところwslttyです。

使っていたwslttyが1.9.0.2だったので、最新の3.1.4.2へアップデートしたらショートカットアイコンがUbuntuのものに変わっていました。デフォルトWSL Terminalはペンギンアイコンでしたが、それ以外は変わるようです。wsl.icoを適用するか、スタートメニューに登録されるデフォルトのWSL Terminalなら従来通りのペンギンアイコンです。

Apache、PHP、MariaDBをインストール

複数のサイトを参照してインストールを進めました。主たるインストールのは次を参照しています。

ページではPHP7.2でしたが、今回はPHP7.3を入れています。hiroski.comはPHP7.4なのにどうして?と言われそうですが、なんとなくです。PHP初心者ですからマイナーバージョンのひとつくらい違っていても差はありません(多分)。

PHP Composerのインストールはこちらを参照しました。ライブラリ管理なんていつになったらお世話になるんだって気もしますが。

php-xdebugのインストールはこちらを参照しました。VSCodeへPHP Debugのインストールもです。

追 2021-01)Xdebugが v3 に上がっていて、20-xdebug.iniの記述が変わっています。またポート番号デフォルト値が9000から9003に変更されています。記述の変更は VSCodeのPHP Debugの記載を参照するか、Xdebug公式サイトのStep Debuggingを参照。

VSCode上で開発するには、VSCodeからWSLを操作するのが便利なわけで、ここ最近Remote WSLをインストールしろとメッセージされていたものをようやく入れました。

早速PHPのサンプルコードを入手しxdebugが動作するか確認してみます。サンプルコードは次から入手しました。

ここまで行うとWSL環境の再起動も気になります。WSLにはshutdownコマンドがないようです。

以上でWSLでPHP開発環境が揃ったと思います。足りないのはHTTPSな環境ですがそのうちに(HTTPS onとするのは簡単...です)。

バックアップと復元

Windows環境の引っ越し等ではWSLのバックアップと復元が役立ちます。

WSL一覧
>WSL --list

WSLエクスポート
>wsl --export <ディストリビューション名> <エクスポートファイル名>

WSLインポート
>wsl --import <ディストリビューション名> <インポート場所> <ファイル名>

ディストリビューション切り替え
>wsl --set-default <ディストリビューション名>

インポート後に起動するとrootになってしまいます。UbuntuをMicrosoft StoreからインストールしたときにUbuntu.exe(あるいは4桁バージョン付与)で、
ubuntu config --default-user <username>
とすれば切り替わるはずですがうまくいかず、次を参照して切り替えました。

PowerShellにて、次のFunctionを登録して実行

Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };

WSL-SetDefaultUser <DistroName> <UserName>

おまけ

PerlのCGI実行を追加

前へ

中古ノートPCを購入しました

次へ

scp/sftpがWSL2+Transix(DS-Lite)の組み合わせで動かない