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