我想比较我在2台不同服务器上的设置.两者都是共享主机,因此我认为我没有足够的权限以任何其他方式执行此操作,但使用phpinfo进行编程.所以现在我有2个输出,我想比较它们而不用手动检查它们.这有自动化的方法吗?
另外,作为一个侧面但相关的注释,我认为 phpinfo是php.ini的输出.它是否正确?
Fer*_*yer 28
从PHP手册上phpinfo():
输出有关PHP当前状态的大量信息.这包括有关PHP编译选项和扩展,PHP版本,服务器信息和环境(如果编译为模块),PHP环境,操作系统版本信息,路径,配置选项的主和本地值,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()); ?>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
使用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>';
}
Run Code Online (Sandbox Code Playgroud)
输出
通过搜索发现了这个问题,随后找到了一个完全符合我想要的脚本(我希望OP也想要)。
https://github.com/brettalton/phpinfo-compare
假设你有一个带有curl的网络服务器,只需将compare.php放在一个目录中,并将$site1和$site2的值更改为获取phpinfo的url,你就得到了一个易于阅读、漂亮的打印差异。请参阅他的博客上的示例 - http://blog.brettalton.com/2012/08/09/phpinfo-compare/