2 phpinfo ayarlarını karşılaştırarak

3 Cevap php

Ben 2 farklı sunucular üzerindeki ayarları karşılaştırmak istiyorum. Hem bu yüzden ben bunu başka bir şekilde ama programlı Phpinfo ile yapmak için yeterli erişimi sanmıyorum hosting paylaşılır. Yani şimdi ben 2 çıkışları var, ben bunları elle muayene etmeden bunları karşılaştırmak istiyorum. Bunun için otomatik bir yol var mı?

Ayrıca, bir tarafı ama ilgili bir not olarak, ben think Phpinfo php.ini çıktı. Bu doğru mudur?

3 Cevap

Üzerinde PHP Manual phpinfo():

PHP mevcut durumu hakkında bilgi büyük miktarda bilgi çıktılar. Bu PHP derleme seçenekleri ve uzantıları, PHP sürümü, sunucu bilgileri ve çevre (bir modül olarak derlenmiş ise), PHP çevre, OS sürüm bilgileri, yolları, ana ve yapılandırma seçenekleri yerel değerler, HTTP başlıkları ve PHP hakkında bilgi içerir Lisans.

phpinfo() sadece php.ini ayarlarını yazdırarak daha fazlasını yapar.

Elle php.ini ayarları işlemek istiyorsanız, ini_get_all() instead of phpinfo() kontrol etmek isteyebilirsiniz. Bu, tüm yapılandırma değerlerini bir dizi döndürür.

Sen var_export() to create PHP code to create the array, or serialize() ), then use array_diff_assoc() kullanarak (örneğin sunucu B sunucu A ini_get_all() çıkışını transfer olabilir ayarlarını karşılaştırın.


export.php: (Sunucu A)

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

compare.php: (Sunucu 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>

Eğer sadece iki php.ini dosyaları karşılaştırmak isterseniz:

#!/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";
}
?>

Arama ve daha sonra ben istedim (ve ben OP çok istedim bekliyoruz) yapar tam olarak ne bir komut dosyası bulundu bu soru bulundu.

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

Eğer curl ile bir web sunucusu var varsayarak, sadece bir dizinde compare.php koymak ve phpinfo almak URL'ler için $ site1 değerlerini ve $ site2 değiştirir ve siz, kendinizi oldukça baskı diff okumak için bir kolay var. Kendi blogunda örneğe bakın - http://blog.brettalton.com/2012/08/09/phpinfo-compare/