2009-10-26 17 views
8

私は2つの異なるサーバー上の設定を比較したいと思います。どちらも共有ホスティングなので、私は他の方法ではなくphpinfoでプログラム的にアクセスするのに十分なアクセス権があるとは思わない。だから私は2つの出力を持っているので、私はそれらを手動で調べることなく比較したいと思います。このための自動化された方法はありますか?2 phpinfoの設定を比較する

また、関連するものとして、私はと思っています。 phpinfoはphp.iniの出力です。これは正しいです? phpinfo()上のPHPマニュアルから

+1

を使用して、iniファイル情報の内容はphp.iniに含まれる内容を反映しています – Vamos

+0

@Rew、その部分をクリアしていただきありがとうございます – Chris

+0

あなたは既に読んでいると思いますが、おそらくこれは読んだだけの価値があります。http://php.net/manual/en/function.phpinfo.php – Vamos

答えて

20

出力PHPの現在の状態に関する大量の情報。これには、PHPコンパイルオプションと拡張機能、PHPバージョン、サーバー情報と環境(モジュールとしてコンパイルされた場合)、PHP環境、OSバージョン情報、パス、設定オプションのマスター値とローカル値、HTTPヘッダー、およびPHPライセンス。

phpinfo()php.iniの設定を印刷するだけではありません。

php.iniの設定を手動で処理する場合は、phpinfo()の代わりにini_get_all()をチェックしてください。これはすべての構成値の配列を返します。

あなたの設定を比較するarray_diff_assoc()を使用し、次いで、(アレイ、又はserialize()を作成するために、PHPコードを作成するvar_export()を使用して、例えば)サーバBにサーバAからini_get_all()の出力を転送することができました。


export.php:(サーバーA)

<?php echo serialize(ini_get_all()); ?> 

compare.php:(サーバーB)

<?php 
function ini_flatten($config) { 
    $flat = array(); 
    foreach ($config as $key => $info) { 
     $flat[$key] = $info['local_value']; 
    } 
    return $flat; 
} 

function ini_diff($config1, $config2) { 
    return array_diff_assoc(ini_flatten($config1), ini_flatten($config2)); 
} 

$config1 = ini_get_all(); 

$export_script = 'http://server-a.example.com/export.php'; 
$config2 = unserialize(file_get_contents($export_script)); 

$diff = ini_diff($config1, $config2); 
?> 
<pre><?php print_r($diff) ?></pre> 
1

あなたはちょうど2つのphpを比較したい場合。 iniファイル:

#!/usr/bin/php 
<?php 

function load($export_script) { 
    $f1 = file($export_script); 
    foreach($f1 as $line) { 
     if($line[0] == ';') continue; 
     if($line[0] == '[') continue; 
     if(trim($line) == "") continue; 
     $var = explode('=', $line); 
     $config1[trim($var[0])] = trim($var[1]); 
    } 
    return $config1; 
} 
$export_script = 'php.ini'; 
$c1 = load($export_script); 

$export_script = 'php52.ini'; 
$c2 = load($export_script); 

foreach($c1 as $key => $val) { 
    if($val == $c2[$key]) continue; 
    echo $key.': '.$c1[$key].' // '.$c2[$key]."\n"; 
} 
?> 
+1

fyi - [parse_ini_file](http://www.php.net/)を参照してください。 parse_ini_file)()[parse_ini_string]() – goat

2

検索してこの質問を見つけ、その後、私が望むものを正確に実行するスクリプトを見つけました。ディレクトリだけでcompare.phpを入れてのphpinfoを取得し、あなたが自分で読みやすいを得たURLへ$ SITE1と$ SITE2の値を変更し、あなたはカールでWebサーバーを持っていると仮定すると

https://github.com/brettalton/phpinfo-compare

、かなりの差異の印刷物。彼のブログ上の例を参照してください - http://blog.brettalton.com/2012/08/09/phpinfo-compare/

0
<?php var_dump(ini_get_all()); ?> 

その後、出力を取り、https://www.diffnow.comたり、お気に入りの差分-ERに貼り付けます。

1

2つのPHPを比較します。簡単に私はそれがphp.iniののストレート出力だと思うが、ほとんどありませんparse_ini_file機能

例のコードスニペット

$firstIni = parse_ini_file('/etc/php5/apache2/php.ini'); 
$secondIni = parse_ini_file('/etc/php5/apache2/php.ini.save'); 
$firstIniDiff = array_diff($firstIni, $secondIni); 
$secondIniDiff = array_diff($secondIni, $firstIni); 

if (count($firstIniDiff) > 0) { 
    echo '<h1>php.ini changes</h1>'; 
    echo '<ol>'; 
    foreach ($firstIniDiff as $key => $val) { 
     echo '<li> php.ini'.$key.': '.$val.' ----> php.ini.save :'[email protected]$secondIniDiff[$key].'</li> '; 
    } 

    echo '</ol>'; 
} 

if (count($secondIniDiff) > 0) { 
    echo '<h1>php.ini.save changes</h1>'; 
    echo '<ol>'; 
    foreach ($secondIniDiff as $key => $val) { 
     echo '<li> php.ini'.$key.': '.$val.' ----> php.ini.save :'[email protected]$firstIniDiff[$key].'</li> '; 
    } 

    echo '</ol>'; 
} 

出力

enter image description here

+0

12個のiniファイルを比較する必要があり、これを大きな出発点として使用しました。ありがとうございました! – thinsoldier

+0

あなたは歓迎です@thinsoldier、ハッピーコーディング...... –

関連する問題