Frage

Ich möchte die Einstellungen vergleichen ich auf 2 verschiedenen Servern haben. Beide sind Shared-Hosting, so dass ich glaube nicht, dass ich genug Zugang habe es andere Art und Weise zu tun, sondern programmatisch mit phpinfo. So, jetzt, dass ich die zwei Ausgänge haben, würde Ich mag sie zu vergleichen, ohne sie manuell zu prüfen. Gibt es eine automatisierte Art und Weise für das?

Auch als Neben aber Beachtet zudem, I denken phpinfo ist die Ausgabe von php.ini. Ist das richtig?

War es hilfreich?

Lösung

Von der PHP Manual auf phpinfo():

  

Gibt eine große Menge an Informationen über den aktuellen Stand von PHP. Dazu gehören Informationen über PHP Kompilierungsoptionen und Erweiterungen, die PHP-Version, Serverinformationen und Umgebung (wenn als Modul kompiliert), die PHP-Umgebung, OS-Versionsinformationen, Pfade, Master und lokale Werte der Konfigurationsoptionen, HTTP-Header, und die PHP Lizenz.

phpinfo() ist mehr als nur php.ini Einstellungen ausdrucken.

Wenn Sie php.ini Einstellungen manuell bearbeiten wollen, möchten Sie vielleicht prüfen, ini_get_all() statt phpinfo(). Dies gibt einen Array aller Konfigurationswerte.

Sie können die Ausgabe von ini_get_all() von Server A nach Server B (zum Beispiel übertragen, indem Sie mit var_export() PHP Code erstellen das Array zu erstellen oder serialize() ), dann verwenden Sie array_diff_assoc() vergleichen Sie die Einstellungen.


export.php : (Server A)

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

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

Andere Tipps

Gefunden diese Frage durch die Suche und fand anschließend ein Skript, das genau das tut, was ich wollte (und ich erwarte, dass die OP wollte auch).

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

Angenommen, Sie einen Web-Server mit curl haben, nur in einem Verzeichnis abgelegt compare.php und ändert die Werte von $ site1 und $ site2 auf URLs, die phpinfo holen und Sie haben selbst eine leicht zu lesen, ziemlich Druck diff. Siehe Beispiel auf seinem Blog - http://blog.brettalton.com/2012/ 09.08 / phpinfo-Vergleichs- /

Der Vergleich zweier php.ini-Dateien einfach mit einem parse_ini_file Funktion

Beispiel-Code-Snippet

$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>';
} 

Output

Wenn Sie wollen einfach nur zwei php.ini-Dateien vergleichen:

#!/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()); ?>

Dann die Ausgänge nehmen und fügen Sie sie in https://www.diffnow.com oder Ihre bevorzugten DIFF- er.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top