
利用しているレンタルサーバーでは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プロジェクトを作成したら、表示と入力のサンプルへ進みます。