same as above for configuration variables
function parsePHPConfig() {
ob_start();
phpinfo(INFO_CONFIGURATION);
$s = ob_get_contents();
ob_end_clean();
$a = $mtc = array();
if (preg_match_all('/<tr><td class="e">(.*?)<\/td><td class="v">(.*?)<\/td><td class="v">(.*?)<\/td><\/tr>/',$s,$mtc,PREG_SET_ORDER)) {
foreach($mtc as $v){
if($v[2] == '<i>no value</i>') continue;
$a[$v[1]] = $v[2];
}
}
return $a;
}
phpinfo
説明
bool phpinfo ( [int what] )現在のPHPの状態に関する、多くの情報を出力します。出力される 情報には、PHPコンパイルオプションと拡張機能、PHPのバージョン、 サーバ情報と環境(モジュールとしてコンパイルされた場合)、 PHP の環境、OS バージョン情報、パス、構成オプションのマスター およびローカルの値、HTTP ヘッダ、PHP Licenseなどが あります。
システムのセットアップはそれぞれ違うため、configuration settingsや 利用できる定義済みの変数 を調べるためにphpinfo()がよく使われます。 また、phpinfo()には EGPCS (Environment, GET, POST, Cookie, Server)の情報が 含まれているため、デバッグツールとしても利用されます。
以下にあるconstantsビット値をひとつまたは 複数個を加算して、オプションのwhat引数に 渡すことによって出力をカスタマイズできます。 それぞれの定数やビット値をor演算子 で結んで渡すこともできます。
表 1. phpinfo() のオプション
| 名前(定数) | 値 | 説明 |
|---|---|---|
| INFO_GENERAL | 1 | configure オプション、php.ini の場所、ビルド日時、 Web サーバ、オペレーティングシステム等。 |
| INFO_CREDITS | 2 | PHP クレジット。phpcredits() も参照ください。 |
| INFO_CONFIGURATION | 4 | ローカルおよびマスタの、カレントの PHP ディレクティブの値。 ini_get() も参照ください。 |
| INFO_MODULES | 8 | ロードされているモジュールと、それぞれの設定。 get_loaded_extensions() も参照ください。 |
| INFO_ENVIRONMENT | 16 | $_ENV で取得できる環境変数の情報。 |
| INFO_VARIABLES | 32 | EGPCS(環境変数・GET・POST・クッキー・サーバ変数)から すべての 定義済みの変数を表示します。 |
| INFO_LICENSE | 64 | PHP ライセンス情報。ライセンス FAQ も参照ください。 |
| INFO_ALL | -1 | 上記のすべてを表示します。これがデフォルトです。 |
注意: expose_php が off の場合、一部の情報は表示されません。 これにはPHPとZendのロゴ、そしてクレジットが含まれます。
注意: CLI モードを利用している場合、phpinfo() は HTML ではなくプレーンテキストで結果を出力します。
phpversion(), phpcredits(), php_logo_guid(), ini_get(), ini_set(), get_loaded_extensions(), そして定義済みの変数 のセクションも参照してください。
phpinfo
07-Jan-2007 06:35
11-Oct-2006 01:29
This is a slight modification to the previous code by "code at adspeed dot com" that extracts the PHP modules as an array. I used it on PHP 4.1.2 and it failed as the <h2> tags also had an align="center". So this update changes the regex for those tags:
<?php
/* parse php modules from phpinfo */
function parsePHPModules() {
ob_start();
phpinfo(INFO_MODULES);
$s = ob_get_contents();
ob_end_clean();
$s = strip_tags($s,'<h2><th><td>');
$s = preg_replace('/<th[^>]*>([^<]+)<\/th>/',"<info>\\1</info>",$s);
$s = preg_replace('/<td[^>]*>([^<]+)<\/td>/',"<info>\\1</info>",$s);
$vTmp = preg_split('/(<h2[^>]*>[^<]+<\/h2>)/',$s,-1,PREG_SPLIT_DELIM_CAPTURE);
$vModules = array();
for ($i=1;$i<count($vTmp);$i++) {
if (preg_match('/<h2[^>]*>([^<]+)<\/h2>/',$vTmp[$i],$vMat)) {
$vName = trim($vMat[1]);
$vTmp2 = explode("\n",$vTmp[$i+1]);
foreach ($vTmp2 AS $vOne) {
$vPat = '<info>([^<]+)<\/info>';
$vPat3 = "/$vPat\s*$vPat\s*$vPat/";
$vPat2 = "/$vPat\s*$vPat/";
if (preg_match($vPat3,$vOne,$vMat)) { // 3cols
$vModules[$vName][trim($vMat[1])] = array(trim($vMat[2]),trim($vMat[3]));
} elseif (preg_match($vPat2,$vOne,$vMat)) { // 2cols
$vModules[$vName][trim($vMat[1])] = trim($vMat[2]);
}
}
}
}
return $vModules;
}
?>
10-Sep-2006 07:32
To obtain a phpinfo without headers (and css) :
<?
ob_start();
phpinfo();
$info = ob_get_contents();
ob_end_clean();
?>
$info = preg_replace('%^.*<body>(.*)</body>.*$%ms', '$1', $info);
You can then style your tables & headings :)
10-Dec-2005 08:31
This function parses the phpinfo output to get details about a PHP module.
/** parse php modules from phpinfo */
function parsePHPModules() {
ob_start();
phpinfo(INFO_MODULES);
$s = ob_get_contents();
ob_end_clean();
$s = strip_tags($s,'<h2><th><td>');
$s = preg_replace('/<th[^>]*>([^<]+)<\/th>/',"<info>\\1</info>",$s);
$s = preg_replace('/<td[^>]*>([^<]+)<\/td>/',"<info>\\1</info>",$s);
$vTmp = preg_split('/(<h2>[^<]+<\/h2>)/',$s,-1,PREG_SPLIT_DELIM_CAPTURE);
$vModules = array();
for ($i=1;$i<count($vTmp);$i++) {
if (preg_match('/<h2>([^<]+)<\/h2>/',$vTmp[$i],$vMat)) {
$vName = trim($vMat[1]);
$vTmp2 = explode("\n",$vTmp[$i+1]);
foreach ($vTmp2 AS $vOne) {
$vPat = '<info>([^<]+)<\/info>';
$vPat3 = "/$vPat\s*$vPat\s*$vPat/";
$vPat2 = "/$vPat\s*$vPat/";
if (preg_match($vPat3,$vOne,$vMat)) { // 3cols
$vModules[$vName][trim($vMat[1])] = array(trim($vMat[2]),trim($vMat[3]));
} elseif (preg_match($vPat2,$vOne,$vMat)) { // 2cols
$vModules[$vName][trim($vMat[1])] = trim($vMat[2]);
}
}
}
}
return $vModules;
}
Sample Output:
[gd] => Array
(
[GD Support] => enabled
[GD Version] => bundled (2.0.28 compatible)
[FreeType Support] => enabled
[FreeType Linkage] => with freetype
[FreeType Version] => 2.1.9
[T1Lib Support] => enabled
[GIF Read Support] => enabled
[GIF Create Support] => enabled
[JPG Support] => enabled
[PNG Support] => enabled
[WBMP Support] => enabled
[XBM Support] => enabled
)
[date] => Array (
[date/time support] => enabled
[Timezone Database Version] => 2005.14
[Timezone Database] => internal
[Default timezone] => America/Los_Angeles
[Directive] => Array (
[0] => Local Value
[1] => Master Value
)
[date.timezone] => Array (
[0] => no value
[1] => no value
)
)
/** get a module setting */
function getModuleSetting($pModuleName,$pSetting) {
$vModules = parsePHPModules();
return $vModules[$pModuleName][$pSetting];
}
Example: getModuleSetting('gd','GD Version'); returns "bundled (2.0.28 compatible)"
07-Oct-2005 12:38
check out this cool and fantastic colourful phpinfo()!
<?php
ob_start();
phpinfo();
$phpinfo = ob_get_contents();
ob_end_clean();
preg_match_all('/#[0-9a-fA-F]{6}/', $phpinfo, $rawmatches);
for ($i = 0; $i < count($rawmatches[0]); $i++)
$matches[] = $rawmatches[0][$i];
$matches = array_unique($matches);
$hexvalue = '0123456789abcdef';
$j = 0;
foreach ($matches as $match)
{
$r = '#';
$searches[$j] = $match;
for ($i = 0; $i < 6; $i++)
$r .= substr($hexvalue, mt_rand(0, 15), 1);
$replacements[$j++] = $r;
unset($r);
}
for ($i = 0; $i < count($searches); $i++)
$phpinfo = str_replace($searches, $replacements, $phpinfo);
echo $phpinfo;
?>