比较 2 个 phpinfo 设置
我想比较我在2台不同服务器上的设置。两者都是共享主机,所以我认为我没有足够的访问权限来以任何其他方式执行此操作,而是以编程方式使用phpinfo。因此,现在我有了2个输出,我想在不手动检查它们的情况下比较它们。有没有一种自动化的方法?
另外,作为一个侧面但相关的说明,我认为phpinfo是php.ini的输出。这是正确的吗?
我想比较我在2台不同服务器上的设置。两者都是共享主机,所以我认为我没有足够的访问权限来以任何其他方式执行此操作,而是以编程方式使用phpinfo。因此,现在我有了2个输出,我想在不手动检查它们的情况下比较它们。有没有一种自动化的方法?
另外,作为一个侧面但相关的说明,我认为phpinfo是php.ini的输出。这是正确的吗?
摘自 PHP 手册:phpinfo()
输出有关 PHP 当前状态的大量信息。这包括有关 PHP 编译选项和扩展、PHP 版本、服务器信息和环境(如果编译为模块)、PHP 环境、操作系统版本信息、路径、配置选项的主值和本地值、HTTP 标头和 PHP 许可证的信息。
phpinfo()
不仅仅是打印出设置。php.ini
如果要手动处理设置,可能需要签出 ini_get_all()
而不是 。这将返回所有配置值的数组。php.ini
phpinfo()
您可以将 的输出从服务器 A 传输到服务器 B(例如,通过使用 var_export()
创建 PHP 代码来创建数组,或者使用 serialize()
),然后使用 array_diff_assoc()
来比较设置。ini_get_all()
导出.php:(服务器 A)
<?php echo serialize(ini_get_all()); ?>
比较.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>
使用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>';
}
输出