質問

2つの異なるサーバーの設定を比較したいと思います。両方とも共有ホスティングであるため、phpinfoを使用してプログラムで行う以外、他の方法でそれを行うのに十分なアクセス権があるとは思いません。 2つの出力が得られたので、手動で調べずに比較したいと思います。これを自動化する方法はありますか?

また、関連するメモですが、phpinfoはphp.iniの出力であると考えます。これは正しいですか?

役に立ちましたか?

解決

phpinfo()のPHPマニュアルから:

  

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

phpinfo()は、単に php.ini 設定を出力するだけではありません。

php.ini の設定を手動で処理する場合は、 phpinfo()ではなく ini_get_all() 。これにより、すべての構成値の配列が返されます。

ini_get_all()の出力をサーバーAからサーバーBに転送できます(たとえば、 var_export() でPHPコードを作成して配列を作成するか、 serialize() )、次に array_diff_assoc() で設定を比較します。


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>

他のヒント

検索してこの質問を見つけ、その後、私が望んでいたことを正確に実行するスクリプトを見つけました(そして、OPも望んでいたと思います)。

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

curl彼のブログの例を参照- http://blog.brettalton.com/2012/ 08/09 / phpinfo-compare /

parse_ini_file 関数を使用して2つのphp.iniファイルを簡単に比較する

サンプルコードスニペット

$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 :'.@$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 :'.@$firstIniDiff[$key].'</li> ';
    }

    echo '</ol>';
} 

出力

ここに画像の説明を入力してください

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";
}
?>
<?php var_dump(ini_get_all()); ?>

出力を取得して、 https://www.diffnow.com またはお気に入りの差分に貼り付けます。えー。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top