PHPのバージョン確認のコマンドについて

採用はこちら

PHPのバージョンを確認する方法として、もっとも基本的なのは以下のコマンドです。

php -v

または、次のコマンドでも同じように確認できます。

php --version

たとえば、以下のような結果が表示されます。

PHP 8.2.12 (cli) (built: Oct 24 2023 21:15:15) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.12, Copyright (c) Zend Technologies

この場合、PHPのバージョンは 8.2.12 です。

ただし、php -v で確認できるのは、基本的に コマンドラインで使われるPHPのバージョン です。

Webサイト上で実際に動いているPHPのバージョンとは異なる場合があるため、そこは注意が必要です。

目次

php -v で確認できるのはCLI版PHP

CLI版PHPとは

php -v で表示されるPHPは、主にターミナルやコマンドプロンプトから実行されるPHPです。

出力結果に以下のように表示されることがあります。

PHP 8.2.12 (cli)

この cliCommand Line Interface の略です。

つまり、コマンドライン用のPHPであることを意味します。

WebサーバーのPHPとは異なる場合がある

実務では、CLI版PHPとWebサーバーで動いているPHPのバージョンが異なることがあります。

たとえば、以下のようなケースです。

CLIのPHP: PHP 8.2
WebサーバーのPHP: PHP 8.1
Dockerコンテナ内のPHP: PHP 8.3

特に、WordPress、Laravel、Docker、XAMPP、MAMP、レンタルサーバー、Homebrewなどを使っている場合は、複数のPHPが混在していることがあります。

そのため、php -v だけで「サイトで使われているPHPバージョン」と判断するのは危険です。

PHPコマンドの場所を確認する方法

macOS / Linuxの場合

macOSやLinuxでは、どのPHPコマンドが実行されているかを確認するために、以下のコマンドを使います。

which php

また、より実務的には以下のコマンドも便利です。

command -v php

さらに、シェル上でPHPがどのように認識されているか確認するには、次のコマンドも使えます。

type php

出力例は以下のようになります。

/opt/homebrew/bin/php

または、

/usr/bin/php

HomebrewでPHPをインストールしている場合は、以下のようなパスになることもあります。

/opt/homebrew/bin/php

Intel Macでは、以下のようなパスになる場合もあります。

/usr/local/bin/php

Windowsの場合

Windowsでは、以下のコマンドでPHPの場所を確認できます。

where php

出力例は以下のようになります。

C:\xampp\php\php.exe
C:\php\php.exe

複数表示された場合、通常は上に表示されているPHPが優先的に実行されます。

XAMPPなどを使っている場合、php -v で想定と違うバージョンが表示されることがあります。

その場合は、where php でどの php.exe が使われているか確認すると原因を特定しやすくなります。

PHPの詳細情報を確認するコマンド

php -i でPHP設定情報を確認する

PHPのバージョンだけでなく、設定情報や読み込まれている拡張機能、環境情報などを確認したい場合は、次のコマンドを使います。

php -i

php -i は、CLI版PHPにおける phpinfo() 相当の情報を表示するコマンドです。

ただし、ここで表示される情報は CLI版PHPの情報 です。

Webサーバー経由で動いているPHPの情報とは異なる場合があります。

特定の情報だけ確認する方法

php -i は出力される情報量が非常に多いため、必要な項目だけ絞り込むと便利です。

macOS / Linuxでは、以下のように grep を使えます。

php -i | grep "PHP Version"

読み込まれている設定ファイルを確認する場合は、以下のようにします。

php -i | grep "Loaded Configuration File"

Windows PowerShellでは、grep の代わりに Select-String を使います。

php -i | Select-String "PHP Version"

設定ファイルを確認する場合は、以下のようにします。

php -i | Select-String "Loaded Configuration File"

php.ini の場所を確認する方法

php --ini を使う

PHPの設定ファイルである php.ini の場所を確認するには、以下のコマンドを使います。

php --ini

出力例は以下のとおりです。

Configuration File (php.ini) Path: /opt/homebrew/etc/php/8.2
Loaded Configuration File:         /opt/homebrew/etc/php/8.2/php.ini
Scan for additional .ini files in: /opt/homebrew/etc/php/8.2/conf.d
Additional .ini files parsed:      /opt/homebrew/etc/php/8.2/conf.d/ext-opcache.ini

特に重要なのは、以下の行です。

Loaded Configuration File: /opt/homebrew/etc/php/8.2/php.ini

ここに表示されているファイルが、実際に読み込まれている php.ini です。

php.ini が読み込まれていない場合

環境によっては、以下のように表示されることがあります。

Loaded Configuration File: (none)

この場合、CLI版PHPでは php.ini が読み込まれていません。

PHPの設定変更が反映されない場合は、そもそも正しい php.ini を編集しているか、php --ini で確認することが重要です。

また、Webサーバー側のPHPでは、CLIとは別の php.ini が使われている場合があります。

PHP拡張機能を確認する方法

有効な拡張機能を一覧で確認する

PHPで有効になっている拡張機能を確認するには、以下のコマンドを使います。

php -m

出力例は以下のようになります。

[PHP Modules]
Core
curl
date
json
mbstring
mysqli
openssl
PDO
pdo_mysql

この一覧に表示されているものが、現在のPHPで有効になっている拡張機能です。

特定の拡張機能を確認する

たとえば、mbstring が有効か確認したい場合、macOS / Linuxでは以下のようにします。

php -m | grep mbstring

pdo_mysql を確認したい場合は、以下のようにします。

php -m | grep pdo_mysql

Windows PowerShellでは、以下のように確認できます。

php -m | Select-String mbstring

ただし、php -m で確認できるのも基本的にはCLI版PHPの拡張機能です。

Webサイト側で有効になっている拡張機能を確認したい場合は、Webサーバー上で確認する必要があります。

Webサーバー上のPHPバージョンを確認する方法

php -v だけでは不十分な場合がある

Webサイトで実際に使われているPHPバージョンを確認したい場合、php -v だけでは不十分なことがあります。

なぜなら、php -v はコマンドライン上のPHPを確認するコマンドだからです。

WebサイトがApache、Nginx、PHP-FPM、レンタルサーバーの独自環境、Dockerコンテナなどで動いている場合、CLIとは別のPHPが使われている可能性があります。

PHPバージョンだけを確認する安全な方法

Webサーバー上のPHPバージョンだけを確認したい場合は、公開ディレクトリに一時的にPHPファイルを作成し、以下のように記述します。

<?php
echo PHP_VERSION;

または、以下でも確認できます。

<?php
echo phpversion();

このファイルにブラウザからアクセスすると、Webサーバー上で実際に動いているPHPのバージョンを確認できます。

確認が終わったら、必ずファイルを削除してください。

phpinfo() を使う場合の注意点

詳細なPHP設定を確認したい場合は、以下のように phpinfo() を使うこともできます。

<?php
phpinfo();

ただし、phpinfo() はPHPバージョンだけでなく、サーバー設定、読み込まれている拡張機能、環境変数、パス情報なども表示します。

そのため、公開環境に置いたままにするとセキュリティ上のリスクがあります。

確認後は、必ず削除してください。

rm phpinfo.php

FTPやサーバー管理画面から削除しても問題ありません。

WordPressでPHPバージョンを確認する方法

管理画面から確認する

WordPressを使っている場合は、管理画面からPHPバージョンを確認できます。

以下の順に進みます。

ツール → サイトヘルス → 情報 → サーバー

この中にPHPバージョンが表示されます。

WordPressサイトのPHPバージョンを確認する場合、この方法は非常に簡単で実務でもよく使われます。

サーバーパネルも確認する

レンタルサーバーを使っている場合は、サーバーパネルやコントロールパネルからPHPバージョンを確認・変更できることがあります。

ただし、サーバーによっては、ドメイン単位やディレクトリ単位でPHPバージョンを設定できる場合があります。

そのため、WordPressでPHPバージョンを確認するときは、以下の3つを確認するとより確実です。

1. WordPress管理画面のサイトヘルス
2. レンタルサーバーのPHP設定画面
3. 必要に応じてWeb上で PHP_VERSION を確認

Composer環境でPHPバージョンを確認する場合

PHP本体のバージョン確認は php -v

Composerを使っているプロジェクトでも、PHP本体のバージョン確認は基本的に以下のコマンドで行います。

php -v

Composer自体のバージョン確認

Composer自体のバージョンを確認する場合は、以下を使います。

composer -V

これはComposerのバージョン確認コマンドであり、PHP本体のバージョン確認が主目的ではありません。

依存関係とPHP環境の互換性を確認する

Composerプロジェクトで実務上便利なのが、以下のコマンドです。

composer check-platform-reqs

このコマンドを使うと、現在のPHPバージョンや拡張機能が、プロジェクトの依存関係で要求されている条件を満たしているか確認できます。

たとえば、プロジェクトがPHP 8.1以上を要求しているのに、実行環境がPHP 8.0だった場合、問題を発見しやすくなります。

LaravelでPHPバージョンを確認する場合

Laravelのバージョン確認とPHPのバージョン確認は別

Laravelプロジェクトでは、以下のコマンドでLaravelのバージョンを確認できます。

php artisan --version

ただし、これはLaravel本体のバージョンを確認するコマンドであり、PHPのバージョン確認ではありません。

PHPのバージョンを確認したい場合は、通常どおり以下を使います。

php -v

Laravelプロジェクトが要求するPHPバージョンを確認する

Laravelプロジェクトが要求しているPHPバージョンは、composer.json で確認できます。

たとえば、以下のように書かれている場合があります。

"require": {
  "php": "^8.1"
}

この場合、そのプロジェクトはPHP 8.1以上を要求しているという意味です。

ただし、実際に動作しているPHPバージョンは、ローカル環境、Docker環境、本番サーバー環境で異なることがあります。

Docker環境でPHPバージョンを確認する方法

コンテナ内のPHPを確認する

Dockerを使っている場合、ホストPCで以下を実行しても、Dockerコンテナ内のPHPバージョンとは異なることがあります。

php -v

Dockerコンテナ内のPHPバージョンを確認するには、まずコンテナを確認します。

docker ps

そのうえで、対象のコンテナに対して以下を実行します。

docker exec -it コンテナ名 php -v

たとえば、コンテナ名が app-php の場合は以下のようになります。

docker exec -it app-php php -v

Docker Composeを使っている場合

Docker Composeを使っている場合は、サービス名を指定して確認できます。

docker compose exec app php -v

PHPのサービス名が php の場合は、以下のようになります。

docker compose exec php php -v

Laravel Sailの場合

Laravel Sailを使っている場合は、以下のコマンドで確認できます。

./vendor/bin/sail php -v

環境によっては、以下のように実行できる場合もあります。

sail php -v

XAMPPやMAMPでPHPバージョンを確認する方法

XAMPPの場合

WindowsでXAMPPを使っている場合、PHPは以下のような場所にあります。

C:\xampp\php\php.exe

XAMPPのPHPバージョンを直接確認するには、以下のように実行します。

C:\xampp\php\php.exe -v

php -v で別のPHPバージョンが表示される場合は、環境変数PATHで別のPHPが優先されている可能性があります。

その場合は、以下のコマンドで確認します。

where php

MAMPの場合

macOSでMAMPを使っている場合、PHPは以下のような場所にあります。

/Applications/MAMP/bin/php/php8.x.x/bin/php

たとえば、PHP 8.2.0を確認する場合は以下のように実行します。

/Applications/MAMP/bin/php/php8.2.0/bin/php -v

MAMPも、ターミナルで実行する php -v と、MAMP上でWebサイトが使っているPHPバージョンが異なることがあります。

よく使うPHPバージョン確認コマンド一覧

基本的な確認コマンド

php -v

PHPのバージョンを確認します。

php --version

php -v と同じようにPHPのバージョンを確認できます。

PHPコマンドの場所を確認するコマンド

macOS / Linuxでは、以下を使います。

command -v php

または、

which php

Windowsでは、以下を使います。

where php

設定や拡張機能を確認するコマンド

PHPの詳細情報を確認するには、以下を使います。

php -i

php.ini の場所を確認するには、以下を使います。

php --ini

有効な拡張機能を確認するには、以下を使います。

php -m

実務でおすすめの確認手順

まずCLIのPHPバージョンを確認する

最初に、以下のコマンドでPHPバージョンを確認します。

php -v

次にPHPコマンドの場所を確認する

macOS / Linuxでは、以下を確認します。

command -v php

または、

type php

Windowsでは、以下を確認します。

where php

php.ini の場所を確認する

次に、読み込まれている php.ini を確認します。

php --ini

Loaded Configuration File の値を確認し、想定した設定ファイルが読み込まれているかチェックします。

必要な拡張機能を確認する

プロジェクトで必要な拡張機能が有効になっているか確認します。

php -m

LaravelやWordPressなどでは、mbstringopensslpdo_mysqlcurlxmlzipgdintl などが必要になることがあります。

Webアプリの場合はWeb側のPHPも確認する

Webアプリの場合は、CLIだけでなく、Webサーバー上で実際に動いているPHPバージョンも確認します。

PHPバージョンだけを確認するなら、以下のような一時ファイルを作成します。

<?php
echo PHP_VERSION;

確認後は必ず削除してください。

まとめ

PHPのバージョン確認コマンドとして、もっとも基本的なのは以下です。

php -v

または、

php --version

ただし、このコマンドで確認できるのは基本的に CLI版PHPのバージョン です。

Webサイトで実際に使われているPHPバージョンとは異なる場合があるため、WordPress、Laravel、Docker、XAMPP、MAMP、レンタルサーバーなどを使っている場合は注意が必要です。

実務では、以下の流れで確認すると安全です。

1. php -v でCLI版PHPのバージョンを確認する
2. command -v php / where php でPHPコマンドの場所を確認する
3. php --ini で読み込まれている php.ini を確認する
4. php -m で有効な拡張機能を確認する
5. Webアプリの場合は、Webサーバー上のPHPバージョンも確認する

特に重要なのは、CLIのPHPとWebサーバーのPHPは別のバージョンになっている可能性がある という点です。

そのため、PHPのバージョン確認では php -v だけで判断せず、実際にアプリケーションが動いている環境のPHPバージョンまで確認することが大切です。

以上、PHPのバージョン確認のコマンドについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次