WindowsのPC内のWSL 2・UbuntuでPHPとComposerを使い、メモリ内SQLiteへの接続を確認する構成

利用しているレンタルサーバーではPHPが使えます。
PHPでWebアプリやシステムを作れるようになれば、自分のスキルにもつながると考え、学習を始めることにしました。
最終的には、会社で使う業務システムを作りたいと思っています。

PHPでよく使われているフレームワークをChatGPTに相談したところ、候補として挙がったのがLaravelでした。
業務システムを効率よく、できるだけ短い期間で作れるようになりたい。
そのためにLaravelを使って学んでみようと考えました。

ただ、環境構築やコードの作成はCodexに任せて進めているため、Laravelの構成や仕組みはまだほとんど理解できていません。
サンプルを作り、何をしたのかをCodexに聞き、実際の動きを確認しながら理解していくつもりです。

この記事では、その最初の準備としてUbuntuへPHPとComposerを導入します。
確認を始めた時点では、WSLのUbuntuは使える状態でしたが、PHPとComposer、unzipはまだ入っていませんでした。

不足していたものを導入し、PHPの起動と拡張機能の読み込み、SQLiteへの接続まで確認した流れをまとめます。
WindowsでWSLのUbuntuを導入済みで、PHPの開発環境をそろえる方を対象にしています。
Node.js・npmはまだ入れていなくても、この手順を進められます。
今回はPHPとComposerの準備までを扱います。

環境と実行結果は2026年10月時点のものです。
この記事で扱うのはLaravelを導入する前の準備で、Laravelのプロジェクト作成は次の段階になります。

開発に使うUbuntuと、不足しているツールを確認する

今回はWSL 2上のUbuntu 24.04.4 LTSを使います。
Ubuntuのターミナルで次のコマンドを実行すると、OSとカーネルの情報を確認できます。

cat /etc/os-release
uname -r

確認した環境では、OSの情報にUbuntu 24.04.4 LTS、カーネルに6.6.87.2-microsoft-standard-WSL2と表示されました。

続いて、PHPとComposerのコマンドが使えるかを調べます。

command -v php
command -v composer
command -v unzip

コマンドが見つかれば、その場所が表示されます。
今回はいずれも表示されず、パッケージの情報でも未導入だったため、PHP・Composer・unzipを追加することになりました。

この段階でNode.js・npmを使うコマンドはありません。
ComposerはPHPの依存パッケージを管理し、npmはJavaScript側の依存パッケージを管理する別のツールです。
まずはPHPとComposerを使える状態にします。

UbuntuにPHPとComposerを導入する

導入するのはPHP 8.3のCLIと拡張機能、Composer、unzipです。
PHP本体に加えて、文字列・XML・HTTP通信・ZIP・データベースを扱うための拡張もそろえます。

パッケージ 用途
php8.3-cli ターミナルからPHPを実行する
php8.3-mbstring、php8.3-xml マルチバイト文字列やXMLを扱う
php8.3-curl、php8.3-zip HTTP通信やZIPを扱う
php8.3-sqlite3、php8.3-mysql PHPからSQLiteやMySQLを利用する
composer PHPの依存パッケージを管理する
unzip ZIPファイルを展開する

インストールで何が追加されるかを把握するため、導入前には次のシミュレーションを行いました。
このコマンドでは実際のインストールは行われません。

apt-get --simulate install --no-install-recommends \
  php8.3-cli php8.3-mbstring php8.3-xml php8.3-curl \
  php8.3-zip php8.3-sqlite3 php8.3-mysql composer unzip

今回の結果では、依存パッケージを含めて新規38パッケージが対象になり、削除対象はありませんでした。
追加されるものは環境によって変わるため、同じ数になる必要はありません。

追加対象を確認したあと、Ubuntuのターミナルで導入を進めました。
まずパッケージ情報を更新します。

sudo apt-get update

更新が終わったら、PHPとComposerなどをインストールします。

sudo apt-get install --no-install-recommends \
  php8.3-cli php8.3-mbstring php8.3-xml php8.3-curl \
  php8.3-zip php8.3-sqlite3 php8.3-mysql composer unzip

今回の導入対象には、ApacheやMySQLサーバーは含まれていません。
php8.3-mysqlはPHP側の拡張で、これを入れるだけでMySQLサーバーが使えるようになるわけではありません。
また、SQLite用のPHP拡張とsqlite3コマンドは別のもので、今回はsqlite3コマンドの追加は行っていません。

導入済みのPHPにもセキュリティ更新を適用する

2026年10月時点で、PHPには重大な脆弱性CVE-2026-109618・CVE-2026-109619の修正が公開されています。
Ubuntu 24.04の公式パッケージでは、8.3.6-0ubuntu0.24.04.13に修正が取り込まれています。
php -vの「8.3.6」だけで判断せず、パッケージの版も確認します。
Ubuntuの修正情報

dpkg-query -W -f='${Package} ${Version}\n' php8.3-cli php8.3-common
apt-cache policy php8.3-cli

導入済みの環境を更新する場合は、パッケージ情報を更新してから、使っているPHP本体と拡張を更新します。
この記事の導入対象では次を使います。

sudo apt-get update
sudo apt-get install --only-upgrade \
  php8.3-cli php8.3-common php8.3-opcache php8.3-readline \
  php8.3-mbstring php8.3-xml php8.3-curl php8.3-zip \
  php8.3-sqlite3 php8.3-mysql

追加のPHP拡張を導入している場合は、その更新も確認してください。
起動中の開発サーバーは更新後に再起動し、新しいPHPで動かします。
今回の環境でも、導入済みのPHP本体と拡張11件が8.3.6-0ubuntu0.24.04.13へ更新されたことを確認しました。
更新後のLaravelのテストは78件・394アサーションが成功しています。
下記の表は初回導入時の確認結果です。

PHPの起動と、データベースへの接続を確かめる

インストール後は、まずPHPとComposerが起動するかを確認します。
コマンドが起動しても、使いたい拡張が読み込まれているとは限りません。
そこで、版の表示に続けて設定ファイルと拡張の一覧を確認します。

php -v
composer --version
unzip -v
php --ini
php -m

導入後の確認結果は次のとおりです。
これは今回の環境での実測値であり、インストールする時期によって表示される版は変わります。

確認対象 結果
PHP CLI 8.3.6
Composer 2.7.1
unzip 6.00
読み込まれたphp.ini /etc/php/8.3/cli/php.ini

php -mの一覧には、今回導入した拡張に対応するmbstring、xml、dom、curl、zip、pdo_sqlite、sqlite3、pdo_mysql、mysqliが表示されました。
パッケージの導入状態も確認でき、指定した9パッケージはすべてinstall ok installedでした。

拡張名が表示されることを確認したら、PHPからSQLiteへ実際に接続してみます。
次のコマンドは、メモリ内のデータベースへPDOで接続し、SQLでSQLiteの版を取得するものです。

php -r '$db = new PDO("sqlite::memory:"); echo "SQLite: ", $db->query("SELECT sqlite_version()")->fetchColumn(), PHP_EOL;'

今回の実行結果は次のとおりでした。

SQLite: 3.45.1

この短いPHPコードでは、new PDO("sqlite::memory:")でメモリ内のSQLiteへ接続します。
query()がSQLを実行し、fetchColumn()が結果の先頭の列を取り出します。
最後のPHP_EOLは改行です。
PHP拡張が一覧にあるだけでなく、接続とSQLの実行まで動いたかを確かめています。

版を取得できたので、PHPからSQLiteへの接続とSQLの実行まで確認できました。
メモリ内での確認のため、データベースファイルは作成していません。
MySQLについては拡張の読み込みまでで、サーバーへの接続はまだ確認していません。

環境を用意して、動きを確かめながら学ぶ

PHPとComposerを導入したあと、コマンドの起動だけでなく、PHPの拡張読み込みとSQLiteでのSQL実行まで確認できました。
一方、MySQLへの接続やLaravelの導入は、今回の確認には含めていません。

学習を進める中で意外だったのは、ローカルで動きを試す際にApacheを別途用意しなくても進められることと、PHPの学習でもNode.jsを使う場面があることでした。
ここまでで環境を準備できても、Laravelの仕組みを理解できたわけではありません。
次はサンプルを動かしながら、ファイルの役割や処理のつながりを確認していきたいです。

次は、Laravelの要件と導入したPHP・拡張を照合し、プロジェクトを作成します。
Laravelプロジェクトを作成したら、表示と入力のサンプルへ進みます。