문제

2 개의 다른 서버에있는 설정을 비교하고 싶습니다. 둘 다 공유 호스팅이므로 다른 방법으로는 Phpinfo와 프로그래밍 방식으로 할 수있는 충분한 액세스 권한이 없다고 생각합니다. 이제 2 개의 출력이 있었으므로 수동으로 검사하지 않고 비교하고 싶습니다. 이를위한 자동화 된 방법이 있습니까?

또한 측면이지만 관련 메모로 생각한다 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에서 서버 B로 (예 : 사용하여 var_export() 배열을 만들기위한 PHP 코드를 만들거나 serialize()), 그런 다음 사용하십시오 array_diff_assoc() 설정을 비교합니다.


Export.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>

다른 팁

검색 하여이 질문을 발견 한 후 내가 원하는 것을 정확하게 수행하는 스크립트를 찾았습니다 (그리고 OP도 원했던 것도 기대합니다).

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

CURL이있는 웹 서버가 있다고 가정하면 Compart.php를 디렉토리에 넣고 $ site1 및 $ site2의 값을 phpinfo를 가져 오는 URL로 변경하면 읽기 쉽고 Prett Print Diff가 있습니다. 그의 블로그의 예를 참조하십시오 - http://blog.brettalton.com/2012/08/09/phpinfo-compare/

두 개의 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

두 개의 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";
}
?>
<?php var_dump(ini_get_all()); ?>

그런 다음 출력을 가져 와서 붙여 넣습니다 https://www.diffnow.com 또는 좋아하는 diff-er.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top