Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】SODIUM_LIBRARY_MINOR_VERSION定数の使い方

SODIUM_LIBRARY_MINOR_VERSION定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

SODIUM_LIBRARY_MINOR_VERSION定数は、PHPの暗号化拡張機能であるSodiumライブラリのマイナーバージョン番号を表す定数です。PHPのSodium拡張機能は、データを安全に扱うための暗号化、復号、デジタル署名といった高度なセキュリティ機能を提供する重要なツールです。

この定数は、現在あなたのPHP環境で利用されているSodiumライブラリのマイナーバージョンを示す整数値を保持しています。例えば、もしSodiumライブラリのバージョンが「1.0.18」である場合、この定数の値は「18」となります。これにより、開発者は現在システムにインストールされているSodiumライブラリの正確なマイナーバージョンをプログラム内で確認できます。

システム開発において、使用しているライブラリのバージョン情報は非常に重要です。特定の機能が特定のバージョン以降でしか利用できない場合や、セキュリティ上の理由から特定のバージョンを避ける必要がある場合など、この定数を利用することで、プログラムがSodiumライブラリの特定のバージョンに依存しているか、または互換性があるかを判断できます。たとえば、echo SODIUM_LIBRARY_MINOR_VERSION; のように記述することで、その値を出力して確認できます。この情報は、アプリケーションの互換性を確保し、セキュリティ要件を満たすために役立ち、システムが意図した通りに安全に動作していることを保証するための一助となります。

構文(syntax)

1<?php
2echo SODIUM_LIBRARY_MINOR_VERSION;
3?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

SODIUM_LIBRARY_MINOR_VERSION定数は、libsodiumライブラリのマイナーバージョン番号を整数で返します。

サンプルコード

PHP Sodium拡張のマイナーバージョンを表示する

1<?php
2
3/**
4 * PHPのSodium拡張機能が提供するlibresodiumライブラリの
5 * マイナーバージョンを表示するサンプルコードです。
6 *
7 * この定数を利用するには、PHPにSodium拡張機能がインストールされ、
8 * php.iniで 'extension=sodium.so' (Linux/macOS) または
9 * 'extension=sodium' (Windows) のように有効化されている必要があります。
10 */
11function displaySodiumLibraryInfo(): void
12{
13    // Sodium拡張機能がロードされているかを確認します。
14    // SODIUM_LIBRARY_MINOR_VERSION定数はこの拡張機能によって提供されます。
15    if (extension_loaded('sodium')) {
16        echo "Sodium拡張機能は正常にロードされています。\n";
17        // SODIUM_LIBRARY_MINOR_VERSION定数の値を取得し表示します。
18        // これは使用されているlibsodiumライブラリのマイナーバージョンを示します。
19        echo "libsodiumライブラリのマイナーバージョン: " . SODIUM_LIBRARY_MINOR_VERSION . "\n";
20        
21        // 参考情報として、メジャーバージョンと完全なバージョン文字列も表示します。
22        // これらはリファレンス情報には含まれていませんが、関連性が高いため含めます。
23        if (defined('SODIUM_LIBRARY_MAJOR_VERSION')) {
24             echo "libsodiumライブラリのメジャーバージョン: " . SODIUM_LIBRARY_MAJOR_VERSION . "\n";
25        }
26        if (defined('SODIUM_LIBRARY_VERSION')) {
27            echo "libsodiumライブラリのバージョン文字列: " . SODIUM_LIBRARY_VERSION . "\n";
28        }
29    } else {
30        echo "Sodium拡張機能はロードされていません。\n";
31        echo "php.iniファイルを確認し、'extension=sodium.so' (または 'extension=sodium') の行を有効にしてください。\n";
32    }
33}
34
35// 関数を実行して情報を表示します。
36displaySodiumLibraryInfo();
37
38?>

このサンプルコードは、PHPの暗号化拡張機能であるSodiumが使用しているlibsodiumライブラリのマイナーバージョン番号を表示する方法を示しています。SODIUM_LIBRARY_MINOR_VERSIONは、PHP 8で提供される定数で、引数を取らず、現在システムにインストールされているlibsodiumライブラリのマイナーバージョンを整数(int)として返します。

この定数を利用するためには、PHPにSodium拡張機能がインストールされ、php.iniファイルでextension=sodium.so(Linux/macOSの場合)またはextension=sodium(Windowsの場合)のように有効になっている必要があります。

コードでは、まずextension_loaded('sodium')関数を使ってSodium拡張機能がPHPにロードされているかを確認します。拡張機能が正常にロードされていれば、SODIUM_LIBRARY_MINOR_VERSION定数の値を取得し、それを画面に出力することで、利用中のlibsodiumライブラリのマイナーバージョンを確認できます。もし拡張機能がロードされていない場合は、有効化を促すメッセージが表示されます。また、参考情報として、libsodiumライブラリのメジャーバージョンや完全なバージョン文字列も関連する定数で表示しています。

このサンプルコードの注意点は、SODIUM_LIBRARY_MINOR_VERSION定数がPHPのSodium拡張機能によって提供される点です。この定数を利用するには、PHPのphp.iniファイルでextension=sodium.so(Linux/macOSの場合)またはextension=sodium(Windowsの場合)のようにSodium拡張機能を有効にする必要があります。もし有効化されていない場合、この定数は未定義となり、プログラムの実行時にエラーが発生します。

サンプルコードのようにextension_loaded('sodium')関数で事前にSodium拡張機能のロード状況を確認することは、定数未定義エラーを回避するための安全で推奨される実装方法です。この定数は、PHPが内部で使用しているlibsodiumライブラリのマイナーバージョンを示しており、同様にSODIUM_LIBRARY_MAJOR_VERSIONでメジャーバージョン、SODIUM_LIBRARY_VERSIONで完全なバージョン文字列も取得できます。これらの定数は、libsodiumライブラリの特定のバージョンに依存する処理を記述する際に役立ちます。

Sodium拡張のバージョン確認

1<?php
2
3/**
4 * PHP Sodium拡張機能が有効になっているか、およびlibsodiumライブラリの
5 * バージョン情報を確認する関数。
6 *
7 * 'sodium.so undefined symbol crypto_core_ristretto255_sub'
8 * のようなエラーが発生した場合、PHPのSodium拡張が
9 * 期待するlibsodiumライブラリのバージョンと異なる、または古いバージョンを参照している
10 * 可能性が高いです。この関数は、現在ロードされているSodium拡張の
11 * バージョン情報を確認するのに役立ちます。
12 *
13 * @return void
14 */
15function checkSodiumLibraryInfo(): void
16{
17    // Sodium拡張機能がPHPにロードされているかを確認
18    if (extension_loaded('sodium')) {
19        echo "Sodium拡張機能はロードされています。\n";
20
21        // libsodiumライブラリのバージョン文字列を取得
22        // 例: "1.0.18"
23        if (defined('SODIUM_LIBRARY_VERSION')) {
24            echo "libsodiumライブラリのバージョン: " . SODIUM_LIBRARY_VERSION . "\n";
25        } else {
26            echo "libsodiumライブラリのバージョン情報 (SODIUM_LIBRARY_VERSION) が利用できません。\n";
27        }
28
29        // libsodiumライブラリのマイナーバージョン(整数)を取得
30        // 例: 18 (SODIUM_LIBRARY_VERSIONが"1.0.18"の場合)
31        // この定数は、特定の機能(例: ristretto255)が利用可能かどうかの判断基準にもなり得ます。
32        if (defined('SODIUM_LIBRARY_MINOR_VERSION')) {
33            echo "libsodiumライブラリのマイナーバージョン: " . SODIUM_LIBRARY_MINOR_VERSION . "\n";
34        } else {
35            echo "libsodiumライブラリのマイナーバージョン情報 (SODIUM_LIBRARY_MINOR_VERSION) が利用できません。\n";
36        }
37
38        echo "\nもし 'undefined symbol' エラーが発生している場合、"
39             . "PHPのSodium拡張機能が、システムにインストールされているlibsodiumライブラリと"
40             . "互換性のないバージョンを参照している可能性があります。"
41             . "特に、古いlibsodiumライブラリには新しい暗号プリミティブ(例: ristretto255)が"
42             . "含まれていないことがあります。PHPとlibsodiumライブラリの両方を最新の状態に保つか、"
43             . "互換性のあるバージョンに更新することを検討してください。";
44
45    } else {
46        echo "Sodium拡張機能はロードされていません。php.iniファイルでextension=sodium.soが"
47             . "有効になっていることを確認してください。\n";
48    }
49}
50
51// 関数を実行して情報を表示
52checkSodiumLibraryInfo();
53

このPHPサンプルコードは、システムのPHP環境でSodium暗号化拡張機能が有効になっているか、そしてその基盤となるlibsodiumライブラリのバージョン情報を確認するために使用されます。特に「sodium.so undefined symbol crypto_core_ristretto255_sub」のようなエラーが発生した場合、PHPのSodium拡張とシステムにインストールされているlibsodiumライブラリのバージョン間に不一致がある可能性が高いため、この情報が問題解決の糸口となります。

SODIUM_LIBRARY_MINOR_VERSIONは、libsodiumライブラリのマイナーバージョンを示す整数値を持つ定数です。この定数には引数はなく、常にint型の値を返します。この値は、特定の暗号機能(例: ristretto255)がそのバージョンのライブラリで利用可能かどうかを判断する参考になります。

コード内のcheckSodiumLibraryInfo関数は引数を持たず、戻り値はvoid型で、実行結果を直接画面に出力します。関数はまずSodium拡張機能がロードされているかを確認し、次にSODIUM_LIBRARY_VERSIONSODIUM_LIBRARY_MINOR_VERSION定数を使ってバージョン情報を表示します。もしエラーが発生しているなら、PHPとlibsodiumライブラリのバージョンを最新に保つか、互換性のあるバージョンに更新することで問題が解決する可能性があります。

このコードは、「undefined symbol」エラー発生時にPHPのSodium拡張とlibsodiumライブラリのバージョン不一致を診断します。extension_loaded('sodium')defined()による拡張機能や定数存在の確認は、安定動作のために不可欠です。エラーの原因は、PHPのSodium拡張とlibsodiumライブラリのバージョンが合わず、必要な機能が提供されないためです。安全に利用するためには、PHPのSodium拡張とlibsodiumライブラリを常に最新かつ互換性のあるバージョンに保つことが重要です。

関連コンテンツ

関連プログラミング言語