我想比較兩臺不同服務器上的設置。兩者都是共享主機,所以我不認爲我有足夠的權限來以任何其他方式執行,但以編程方式使用phpinfo。所以現在我有2個輸出,我想比較它們而不用手動檢查它們。有沒有自動化的方法呢?比較2 phpinfo設置
此外,作爲一個方面但相關的說明,我認爲 phpinfo是php.ini的輸出。它是否正確?
我想比較兩臺不同服務器上的設置。兩者都是共享主機,所以我不認爲我有足夠的權限來以任何其他方式執行,但以編程方式使用phpinfo。所以現在我有2個輸出,我想比較它們而不用手動檢查它們。有沒有自動化的方法呢?比較2 phpinfo設置
此外,作爲一個方面但相關的說明,我認爲 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(通過使用var_export()
創建PHP代碼創建陣列,或serialize()
例如),然後使用array_diff_assoc()
比較設置傳送到服務器B。
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>
如果你只是想比較兩個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";
}
?>
fyi - 參見[parse_ini_file](http://www.php.net/ parse_ini_file)()[parse_ini_string](http://www.php.net/parse_ini_string)() – goat
通過搜索找到了這個問題,隨後找到了一個完全符合我想要的腳本(我希望OP也想要)。
https://github.com/brettalton/phpinfo-compare
假設你有一個Web服務器,捲曲,只是把compare.php目錄中,並改變$ SITE1和值$站點2到獲取的phpinfo URL和你擁有屬於自己的易於閱讀,漂亮的打印差異。見他的博客的例子 - http://blog.brettalton.com/2012/08/09/phpinfo-compare/
<?php var_dump(ini_get_all()); ?>
然後把輸出並粘貼到https://www.diffnow.com或你最喜歡的DIFF-ER。
比較兩個php。容易使用parse_ini_file功能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 :'[email protected]$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 :'[email protected]$firstIniDiff[$key].'</li> ';
}
echo '</ol>';
}
輸出
我需要比較一打ini文件,並用它作爲一個很好的起點。謝謝! – thinsoldier
不客氣@thinsoldier,快樂編碼...... –
我不認爲這是php.ini中的直輸出,但最的信息反映了php.ini中包含的內容 – Vamos
@Rew,感謝您清除 – Chris
你可能已經閱讀過了,如果沒有,也許值得一讀:http://php.net/manual/en/function.phpinfo.php – Vamos