この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:guest
更新日時:2026-06-11 07:10:02

タイトル: バージョンの確認
SEOタイトル: PHP バージョン確認方法完全ガイド(php -v / phpinfo / 定数 / Web Server)

この記事の要点
  • CLI で確認: php --version または php -v
  • Web で確認: <?php phpinfo(); ?> を 1 度だけ実行(本番は削除)。phpversion() 関数も同等
  • 定数: PHP_VERSION / PHP_MAJOR_VERSION / PHP_MINOR_VERSION / PHP_RELEASE_VERSION
  • バージョン比較: version_compare(PHP_VERSION, "8.0.0", ">=")
  • Web サーバの PHP は CLI と別バージョンの可能性 → Apache mod_php / PHP-FPM 経由で確認必須

CLI で確認

# 標準
php --version
# PHP 8.2.10 (cli) (built: Aug 31 2023 13:53:39) (NTS)
# Copyright (c) The PHP Group
# Zend Engine v4.2.10, Copyright (c) Zend Technologies

# 短縮形
php -v

# パス確認(Linux/Mac)
which php
# /usr/bin/php

ls -la $(which php)

# Windows
where php

Web 経由で確認

<?php
// 方法 1: phpinfo() で詳細情報全表示
// (★ 本番では絶対に残さない!情報漏洩リスク)
phpinfo();

// 方法 2: phpversion() で値だけ取得
echo phpversion();             // 8.2.10

// 方法 3: 定数
echo PHP_VERSION;              // 8.2.10
echo PHP_MAJOR_VERSION;        // 8
echo PHP_MINOR_VERSION;        // 2
echo PHP_RELEASE_VERSION;      // 10
echo PHP_EXTRA_VERSION;        // (空 or RC1 等)
echo PHP_VERSION_ID;           // 80210 (= 80000+200+10)

定数の中身

定数例(8.2.10 の場合)用途
PHP_VERSION"8.2.10"文字列表現
PHP_MAJOR_VERSION8メジャー
PHP_MINOR_VERSION2マイナー
PHP_RELEASE_VERSION10パッチ
PHP_EXTRA_VERSION"""alpha1" "RC2" 等
PHP_VERSION_ID80210数値比較用 ★
PHP_OS"Linux"OS 名
PHP_OS_FAMILY"Linux"OS 系統 (Windows/Linux/Darwin/BSD/Solaris/Unknown)
PHP_INT_SIZE8int サイズ(32bit=4, 64bit=8)
PHP_INT_MAX9223372036854775807int 最大値

バージョン比較

<?php
// version_compare(): 推奨。文字列比較なので 10 > 9 もOK
if (version_compare(PHP_VERSION, '8.0.0', '>=')) {
    echo "PHP 8 以上で動作中";
}

if (version_compare(PHP_VERSION, '7.4.0', '<')) {
    die("PHP 7.4 以上が必要です");
}

// PHP_VERSION_ID で高速比較
if (PHP_VERSION_ID >= 80100) {
    // PHP 8.1+ 専用機能を使う
    enum Status { case Active; case Inactive; }
}

// ❌ ダメな例: 文字列比較
if (PHP_VERSION >= '7.10.0') {
    // "8.0.0" < "7.10.0" になる(先頭文字比較)
}

php.ini と SAPI の確認

# php.ini のパス
php --ini
# Configuration File (php.ini) Path: /etc/php/8.2/cli
# Loaded Configuration File:         /etc/php/8.2/cli/php.ini
# Scan for additional .ini files in: /etc/php/8.2/cli/conf.d
# Additional .ini files parsed:      /etc/php/8.2/cli/conf.d/10-opcache.ini ...

# 有効モジュール一覧
php -m

# 詳細情報(CLI から phpinfo)
php -i | head -30

# 特定設定値
php -r 'echo ini_get("memory_limit");'   # 128M
php -r 'echo ini_get("upload_max_filesize");'

Composer 経由の確認

# Composer が認識している PHP
composer show -p
# +-------------------------------+--------+
# | name                          | version|
# +-------------------------------+--------+
# | php                           | 8.2.10 |
# | php-64bit                     | 8.2.10 |
# | ext-json                      | 8.2.10 |
# | ...                           | ...    |
# +-------------------------------+--------+

# プロジェクトの composer.json で要件を確認
cat composer.json | grep -A 2 '"require"'
# "require": {
#   "php": ">=8.1",

# 整合性チェック
composer check-platform-reqs

Web Server(Apache / Nginx + PHP-FPM)の PHP

★ CLI で見える PHP と Web Server が使う PHP は別の可能性があります。

<?php
// info.php として配置(★ アクセス後すぐ削除)
echo "PHP Version: " . PHP_VERSION . "\n";
echo "SAPI: " . PHP_SAPI . "\n";
// CLI: "cli"
// Apache mod_php: "apache2handler"
// PHP-FPM: "fpm-fcgi"
// 内蔵サーバ: "cli-server"

echo "Loaded INI: " . php_ini_loaded_file() . "\n";

phpinfo();
# Apache + mod_php のバージョン
apache2ctl -M | grep php       # Linux
httpd -M | grep php            # 一部ディストリ

# PHP-FPM のバージョン
php-fpm -v
/usr/sbin/php-fpm8.2 -v        # フルパス

# Nginx の PHP 設定ファイル
grep -r "fastcgi_pass" /etc/nginx/
# fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
# ↑ ここで使われている FPM のバージョンが Web 経由の PHP

複数バージョン共存

# Ubuntu / Debian の場合
update-alternatives --display php
update-alternatives --config php
# 番号入力で切替

# Mac (Homebrew)
brew install php@8.1 php@8.2 php@8.3
brew link --overwrite --force php@8.2
brew unlink php@8.2 && brew link php@8.3

# 各バージョンを直接呼ぶ
/usr/bin/php7.4 -v
/usr/bin/php8.0 -v
/usr/bin/php8.2 -v

phpenv / phpbrew で柔軟管理

# phpenv: rbenv ライクなバージョン管理
phpenv install 8.2.10
phpenv versions             # 一覧
phpenv global 8.2.10        # 全体デフォルト
phpenv local 8.1.20         # ディレクトリローカル(.php-version ファイル生成)

# phpbrew: より柔軟な切替
phpbrew install 8.2.10 +default +mysql +pdo
phpbrew use php-8.2.10
phpbrew switch php-8.2.10   # 永続切替

# Docker でバージョン分離(推奨)
docker run --rm -it php:8.2-cli php -v
docker run --rm -it php:8.1-fpm php -v

シェル関数で簡単確認

# ワンライナーで全部表示
php -r 'echo PHP_VERSION . PHP_EOL . PHP_SAPI . PHP_EOL . php_ini_loaded_file() . PHP_EOL;'

# JSON 形式で
php -r 'echo json_encode([
    "version" => PHP_VERSION,
    "version_id" => PHP_VERSION_ID,
    "major" => PHP_MAJOR_VERSION,
    "sapi" => PHP_SAPI,
    "ini" => php_ini_loaded_file(),
    "extensions" => get_loaded_extensions(),
], JSON_PRETTY_PRINT);'

FAQ

Q: php -v で出るバージョンと Web のバージョンが違う
A: CLI と Web (mod_php / PHP-FPM) で別バイナリが使われています。phpinfo() をブラウザで開いてサーバ側を確認してください。

Q: バージョン要件を満たさない場合の挙動
A: Composer は require php を満たさないと composer install 失敗。Laravel など主要フレームワークは起動時にチェックして RuntimeException を投げます。

Q: phpinfo() を本番に置きっぱなしは危険?
A: ★ 非常に危険。open_basedir / session.save_path / DB 接続文字列まで露出します。デバッグ後即削除、expose_php = Offphp.ini で設定推奨。