比较2个phpinfo设置

时间:2009-10-26 08:38:41

标签: php settings

我想比较我在2台不同服务器上的设置。两者都是共享主机,因此我认为我没有足够的权限以任何其他方式执行此操作,但使用phpinfo进行编程。所以现在我有2个输出,我想比较它们而不用手动检查它们。有没有自动化的方法呢?

另外,作为一个侧面但相关的注释,我认为 phpinfo是php.ini的输出。这是对的吗?

5 个答案:

答案 0 :(得分:25)

来自phpinfo()的PHP手册:

  

输出有关PHP当前状态的大量信息。这包括有关PHP编译选项和扩展,PHP版本,服务器信息和环境(如果编译为模块),PHP环境,操作系统版本信息,路径,配置选项的主和本地值,HTTP标头和PHP的信息。执照。

phpinfo()不只是打印出php.ini设置。

如果您想手动处理php.ini设置,可能需要查看ini_get_all()而不是phpinfo()。这将返回所有配置值的数组。

您可以将ini_get_all()的输出从服务器A传输到服务器B(例如,使用var_export()创建PHP代码来创建数组,或serialize()),然后使用{ {3}}比较设置。


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)

通过搜索找到了这个问题,然后找到了一个完全符合我想要的脚本(我希望OP也想要)。

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

假设你有一个带有curl的web服务器,只需将compare.php放在一个目录中,并将$ site1和$ site2的值更改为获取phpinfo的url,你就会得到一个易于阅读的漂亮的打印差异。请参阅他的博客上的示例 - http://blog.brettalton.com/2012/08/09/phpinfo-compare/

答案 2 :(得分:2)

使用parse_ini_file函数

轻松比较两个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>';
} 

<强>输出

enter image description here

答案 3 :(得分:1)

如果您只想比较两个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";
}
?>

答案 4 :(得分:0)

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

然后取出输出并将其粘贴到https://www.diffnow.com或您喜欢的差异中。