我想在两台不同的服务器,我的设置比较。 两者都共同主办,所以我不认为我有足够的访问做任何其他的方式,但与编程的phpinfo。 所以,现在,我有2个输出,我想他们无需手动检查数据进行比较。 是否有这种自动化的方式?
此外,作为一个方面,但相关的说明,我想的phpinfo是php.ini文件的输出。 它是否正确?
我想在两台不同的服务器,我的设置比较。 两者都共同主办,所以我不认为我有足够的访问做任何其他的方式,但与编程的phpinfo。 所以,现在,我有2个输出,我想他们无需手动检查数据进行比较。 是否有这种自动化的方式?
此外,作为一个方面,但相关的说明,我想的phpinfo是php.ini文件的输出。 它是否正确?
从PHP手册上phpinfo()
输出了大量的关于PHP的当前状态信息。 这包括关于PHP编译选项和扩展,PHP版本,服务器信息和环境(如果编译为一个模块),PHP环境,OS版本信息,路径,主机和配置选项,HTTP头本地值,以及PHP信息执照。
phpinfo()
并不仅仅是打印出更多的php.ini
设置。
如果你要处理php.ini
手动设置,你可能想看看ini_get_all()
而不是phpinfo()
。 这将返回所有配置值的数组。
你能的输出传送ini_get_all()
通过使用例如从服务器A向服务器B var_export()
创建PHP代码创建阵列,或serialize()
然后使用array_diff_assoc()
来比较设置。
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>
发现通过搜索,随后这个问题找到了一个脚本,不正是我想要的(我期望OP想太)。
https://github.com/brettalton/phpinfo-compare
假设你有卷曲的web服务器,只是把compare.php目录中,并改变$ SITE1和值$站点2到获取的phpinfo URL和你拥有属于自己的易于阅读,漂亮的打印差异。 见他的博客的例子- http://blog.brettalton.com/2012/08/09/phpinfo-compare/
容易使用比较两个文件的php.ini parse_ini_file功能
示例代码片段
$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>';
}
产量
如果你只是想比较两个文件的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";
}
?>
<?php var_dump(ini_get_all()); ?>
然后把输出并粘贴到https://www.diffnow.com或你最喜欢的DIFF-ER。