許せない心理テスト

PHP7.4.12を使っています。
$_SERVER['SERVER_SOFTWARE']を使ってバージョン情報を取得できたのですが、ソフト別に変数に代入するにはどのようにおこなったら良いのでしょうか。

$apache = *****
$openssl = *****
$php = *****

可能であればデータベース(MariaDB)のバージョン情報を取得する方法も教えていただければ幸いです。

よろしくお願いいたします。

A 回答 (1件)

PHP 7.2以降では、"phpinfo"関数を使用することで、Webサーバー上で実行されているすべてのソフトウェアのバージョン情報を取得することができます。

以下は、phpinfo関数を使用して、バージョン情報を変数に代入する方法です。

php
Copy code
ーーーーーーーーーーーーーーーーーーーーー
<?php
// phpinfo関数で情報を取得する
ob_start();
phpinfo();
$info = ob_get_clean();

// ソフトウェアごとに正規表現を使用してバージョン情報を取得する
preg_match('/Apache\/([0-9.]+)/i', $info, $match);
$apache = $match[1];

preg_match('/OpenSSL\/([0-9.]+)/i', $info, $match);
$openssl = $match[1];

preg_match('/PHP\/([0-9.]+)/i', $info, $match);
$php = $match[1];

// データベースのバージョン情報を取得する
$dbh = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->query('SELECT VERSION()');
$mariadb = $stmt->fetchColumn();

// 結果を表示する
echo "Apache version: " . $apache . "<br>";
echo "OpenSSL version: " . $openssl . "<br>";
echo "PHP version: " . $php . "<br>";
echo "MariaDB version: " . $mariadb . "<br>";
?>
ーーーーーーーーーーーーーーーーーーーーー
上記のコードでは、phpinfo関数で取得した情報を正規表現を使ってソフトウェアごとにバージョン情報を取得し、変数に代入しています。また、データベースのバージョン情報を取得するためにPDOを使用しています。変数に代入した情報を表示する部分は、実際の利用に合わせて変更してください。
    • good
    • 0
この回答へのお礼

早速お返事いただきましてありがとうございました。
教えていただいた通りに埋め込んだところ、無事に取得・表示できました。

当方環境はWindows10+XAMPP7.41で構成しています。
もし可能であれば、OSのバージョンも取得する方法も教えていただけたら幸いです。

お礼日時:2023/03/15 13:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報