比较2个phpinfo设置

比较2个phpinfo设置,php,settings,Php,Settings,我想比较两台不同服务器上的设置。两者都是共享主机,因此我认为除了通过phpinfo编程之外,我没有足够的权限以其他方式来实现。现在我有了两个输出,我想比较它们,而不用手动检查它们。有没有一种自动化的方法 另外,作为一个附带但相关的注释,我认为phpinfo是php.ini的输出。这是否正确?来自PHP手册的phpinfo(): 输出有关PHP当前状态的大量信息。这包括有关PHP编译选项和扩展、PHP版本、服务器信息和环境(如果编译为模块)、PHP环境、操作系统版本信息、路径、配置选项的主值和本地

我想比较两台不同服务器上的设置。两者都是共享主机,因此我认为除了通过phpinfo编程之外,我没有足够的权限以其他方式来实现。现在我有了两个输出,我想比较它们,而不用手动检查它们。有没有一种自动化的方法


另外,作为一个附带但相关的注释,我认为phpinfo是php.ini的输出。这是否正确?

来自PHP手册的
phpinfo()

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

phpinfo()
不仅仅是打印
php.ini
设置

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

您可以将
ini\u get\u all()
的输出从服务器A传输到服务器B(例如,通过使用创建PHP代码来创建数组,或),然后使用来比较设置


export.php:(服务器A)


compare.php:(服务器B)


如果您只想比较两个php.ini文件:

<?php var_dump(ini_get_all()); ?>
#/usr/bin/php

通过搜索找到了这个问题,随后找到了一个完全符合我要求的脚本(我希望OP也能满足我的要求)

假设您有一个带有curl的web服务器,只需将compare.php放在一个目录中,并将$site1和$site2的值更改为获取phpinfo的URL,您就得到了一个易于阅读、漂亮的打印差异。请参见他的博客上的示例-



然后将输出粘贴到或您最喜欢的差异中。

使用函数轻松比较两个php.ini文件

示例代码片段

$firstIni=parse_ini_文件('/etc/php5/apache2/php.ini');
$secondIni=parse_ini_文件('/etc/php5/apache2/php.ini.save');
$firstIniDiff=数组_diff($firstIni,$secondIni);
$secondIniDiff=array_diff($secondIni,$firstIni);
如果(计数($firstIniDiff)>0){
echo“php.ini更改”;
回声';
foreach($firstIniDiff作为$key=>$val){
echo“
  • php.ini.$key.:”.$val.--->php.ini.save:”.@$secondIniDiff[$key].
  • ; } 回声'; } 如果(计数($secondIniDiff)>0){ echo“php.ini.save changes”; 回声'; foreach($secondIniDiff作为$key=>$val){ echo'
  • php.ini.$key.'.$val.--->php.ini.save:'.@$firstIniDiff[$key].
  • ; } 回声'; }
    输出


    我不认为这是php.ini的直接输出,但大部分信息反映了php中包含的内容。ini@Rew,感谢您清除这部分内容。您可能已经阅读了这篇文章,如果没有,也许值得一读:正如下面的一个答案中所说,我不久前写了一个脚本,可以解析phpinfo()跨越两个服务器:fyi-see()()我需要比较十几个ini文件,并以此作为一个很好的起点。非常感谢。快乐编码(y):)这太棒了。
    <?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>
    
    #!/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()); ?>
    
    $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>';
    }