Vergleichen 2 phpinfo Einstellungen
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?
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.