We are ACORN!

プログラムやサーバーの設定など、技術的な記事を載せております。

PHP WSL プログラミング

Visual Studio CodeでWSL上のPHPをデバッグ

投稿日:

前書き

内容が古くなってきたので、WSL2+PHP8.4に書き換えようと思います。

前提条件

WSL2を使い、Ubuntu24.04(LTS)インストールして使います。

作業手順

PHP8.4のインストール

Ubuntu24.04の標準ではPHPは8.3です。
すでに8.4になってからかなり立ちますので、最新版を使っていきたいと思います。
まずは必要なリポジトリなどを入れていきましょう。

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

その後PHPを入れていきます。

sudo apt -y install php8.4 php8.4-mbstring

そうするとapache2が入っていないなら強制的にapache2がインストールされ、モジュール類がインストールされます。
PHPの必要なモジュールはこの時に入れておきましょう。
インストールが終わったら、php -vでバージョンを確認してみてください。

Xdebugのインストール

sudo apt install php8.4-xdebug

これだけで入ります。

Xdebugの設定

zend_extension=xdebug.so

この一行しかありませんが、この下に足します。

zend_extension=xdebug.so

xdebug.mode=debug
xdebug.start_with_request=yes

Xdebugの有効化・Apacheの再起動

その後、xdebugを有効にして、サーバーを再起動します。

sudo phpenmod xdebug
sudo systemctl restart apache2

Visual Studio CodeをWSLに接続する

まずリモートエクスプローラーを押します。
そこでWSLターゲットを選び、その中のUbuntu-24.04にカーソルを乗せるとが出ます。
それを押すと現在のウィンドウで接続します。

その後作業したいフォルダを開くことになります。
通常は/var/www/htmlはrootが所有者になっているので、自分のアカウントに変えておくと良いです。

Visual Studio Codeにプラグインをインストール&設定する

PHP Debugというプラグインをインストールします。
パブリッシャーがXdebugであることを確認してください。同名のプラグインが存在します。

PHP Debugを設定

デバッグしたいファイルをVSCodeで開きます。
そして、サイドバーの「実行とデバッグ」ボタンを押します。
launch.jsonファイルを作成します。というリンクをクリックします。

そうすると、設定ファイルが開きますので、下記のように書き換えます。

{
    "version": "0.2.0",
    "configurations": [
		{
		  "name": "Listen for Xdebug",
		  "type": "php",
		  "request": "launch",
		  "port": 9003,
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}"
            }
		}
	]
}

デバッグする

プロジェクトのソースファイルにブレイクポイントを設定します。

該当ページをブラウザで読み込むとブレークポイントでストップします。

後は以下のようなツールバーでステップ実行したり、変数を見たりできますね。

これでデバッグ出来るようになりました!
活用していきたいと思います。

-PHP, WSL, プログラミング


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

スクリーンリーダーの利用を意識したコーディング

インターネットを閲覧している人は様々です。中には目の見えない方もいらっしゃいます。 そういった方にも情報を伝えるためには、HTMLを正しくコーディングしていく必要があります。 いくつか考えてみましょう …

BEMを使ってコーディングする

様々なクラス名の名づけルールがありますが、その中でもBEMはコンポーネント化のしやすさや、詳細度によるミスがないことなど、いくつか利点があります。

margin?padding?

HTMLコーディングでの余白の付け方

HTMLコーディング初学者で良くあるのが、カンプからHTMLにするところまではうまく行くものの余白の付け方がうまく行かない、ということかもしれません。 余白をどのように付ければ良いのでしょうか。

【WSL】Windows 10でsshのポートフォワードをつなぎっぱなしにする

最近社内にメールを送信すると、なぜかスパムと認識されてしまいます。 ヘッダーを見ると、どうもSMTPの接続元がOCNだとスパムだと判断されるみたいです。 確かにブラックリストに載っています。そりゃしょ …

【PHP】 全角記号のときmb_strwidthが1を返す

PHPで全角の判断に、mb_strwidthを使っていました。 mb_strwidth == (mb_strlen*2) だったら全角文字、みたいな。 そうしたら、「◎」を入れたらうまくいかないとクラ …