сравнение 2 настроек phpinfo - PullRequest
       23

сравнение 2 настроек phpinfo

10 голосов
/ 26 октября 2009

Я бы хотел сравнить мои настройки на 2 разных серверах. Оба являются общими хостингами, поэтому я не думаю, что у меня достаточно доступа, чтобы сделать это любым другим способом, кроме как программно с phpinfo. Итак, теперь, когда у меня есть 2 выхода, я бы хотел сравнить их, не рассматривая их вручную. Есть ли автоматизированный способ для этого?

Также, в качестве примечания, но я думаю, phpinfo - это вывод php.ini. Это правильно?

Ответы [ 5 ]

25 голосов
/ 26 октября 2009

Из руководства по 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()); ?>

Compare.php : (Сервер B)

<code><?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) ?>
2 голосов
/ 10 октября 2017

Сравнение двух файлов 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>';
} 

выход

enter image description here

2 голосов
/ 27 апреля 2014

Нашел этот вопрос путем поиска и впоследствии нашел скрипт, который делает именно то, что я хотел (и я ожидаю, что ОП тоже хотел).

https://github.com/brettalton/phpinfo-compare

Предполагая, что у вас есть веб-сервер с curl, просто поместите Compare.php в каталог и замените значения $ site1 и $ site2 на URL-адреса, извлекающие phpinfo, и вы получите легко читаемый, красивый печатный diff. Смотрите пример в своем блоге - http://blog.brettalton.com/2012/08/09/phpinfo-compare/

1 голос
/ 15 июня 2012

Если вы просто хотите сравнить два файла 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";
}
?>
0 голосов
/ 21 июля 2016
<?php var_dump(ini_get_all()); ?>

Затем возьмите выходные данные и вставьте их в https://www.diffnow.com или в свой любимый дифференциал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...