Сравнение двух phpinfo()

Часто для разработки используются один сервер, а рабочий проект лежит на другом сервере и возникает необходимость чтобы настройки среды были одинаковы. Чтобы сравнить настройки php есть такая простая функция, которую все разработчики узнают одну из первых — phpinfo(). Но настроек там много и сравнивать все флаги глазами ни очень приятно, а если еще не знаешь, что ищешь, то вообще беда. Не много погуглив нашел решение, которое удовлетворяет поставленной задаче вполне — сравнить два phpinfo. Теперь просто приведу код:
На 1ом сервере, создаем файл и пишем в него следующий код:

<?php echo serialize(ini_get_all()); ?>

На 2ом сервере, создаем файл и пишем не много более «сложный» код:

<?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://servername1.ru/filename.php';
$config2 = unserialize(file_get_contents($export_script)); 
$diff = ini_diff($config2, $config1);
?> 
<pre><?php print_r($diff) ?></pre>

На выходе получаем массив, такого виду:

Array
(
    [error_log] => /work/www/project.loc/log/php.log
    [expose_php] => 1
    [extension_dir] => /usr/lib/php5/ext/
    [include_path] => .:/usr/share/php:/usr/share/pear
    [max_execution_time] => 30
    [open_basedir] => 
    [safe_mode] => 
    [session.gc_probability] => 1
    [session.save_path] => /work/www/project.loc/sessions
    [upload_tmp_dir] => /work/www/project.loc/tmp
    [xdebug.auto_trace] => 0
    [xdebug.collect_assignments] => 0
    [xdebug.collect_includes] => 1
 )

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *