Skip to content
Snippets Groups Projects
Commit b07785e2 authored by hahn's avatar hahn
Browse files

added check with required php modules and dirs

parent 00e7c769
No related branches found
No related tags found
No related merge requests found
<?php
/* ######################################################################
IML DEPLOYMENT
CONFIG CHECKER for new setups
---------------------------------------------------------------------
2017-12-01 Axel <axel.hahn@iml.unibe.ch>
###################################################################### */
// ----------------------------------------------------------------------
// functions
// ----------------------------------------------------------------------
function drawbox($s, $sClass) {
return '<div class="box ' . $sClass . '">' . $s . '</div>';
}
function showerror($s) {
return drawbox($s, 'error');
}
function showok($s) {
return drawbox($s, 'ok');
}
function checkdir($sDir, $sKey = false) {
global $aErrors;
echo 'check directory [' . $sDir . '] ';
if (!is_dir($sDir)) {
echo '<span class="error">does not exist</span><br>';
$aErrors[] = "* \$aConfig['$sKey'] points to a non existing directory (" . $sDir . ").\n";
return false;
} else {
if (!is_writable($sDir)) {
echo '<span class="error">not writable</span><br>';
$aErrors[] = "* \$aConfig['$sKey'] = " . $sDir . " is NOT writable.\n";
return false;
} else {
echo '<span class="ok">OK</span> exists and is writable<br>';
return true;
}
}
return false;
}
function checkModule($aRequiredMods=array()){
global $aErrors;
$sReturn='';
$aAllMods=get_loaded_extensions(false);
asort($aAllMods);
if(!count($aRequiredMods)){
echo '<strong>List of all installes php modules</strong><br>';
foreach($aAllMods as $sMod){
echo $sMod.'<br>';
}
} else {
foreach($aRequiredMods as $sMod){
echo $sMod.' - ';
if(!array_search($sMod, $aAllMods)===false){
echo '<span class="ok">OK</span> installed';
} else {
echo '<span class="error">does not exist</span>';
$aErrors[] = "* php module $sMod was not found.\n";
}
echo '<br>';
}
}
return true;
}
// ----------------------------------------------------------------------
//
// main
//
// ----------------------------------------------------------------------
echo '
<style>
body{font-family: arial; background: #f8f8f8; color:#345;}
.box{border: 2px solid rgba(0,0,0,0.2); padding: 1em; margin-bottom: 1em;}
.ok{color:#383; background:#cfd;}
.error{color:#833; background:#fdd;}
</style>
<h1>Config Checker</h1>
';
$aErrors = array();
include("../config/inc_projects_config.php");
if (!isset($aConfig) || !is_array($aConfig)) {
// echo showerror("\$aConfig does not exist. The config was not included before including " . __FILE__ . " in the request/ script.");
$aErrors[] = "* \$aConfig does not exist. The config was not included before including " . __FILE__ . " in the request/ script.";
} else {
// ----------------------------------------------------------------------
echo '<h2>Check keys with directories</h2>';
foreach (array(
'appRootDir',
'configDir',
'workDir',
'dataDir',
'buildDir',
'buildDefaultsDir',
'packageDir',
'archiveDir',
) as $sKey) {
checkdir($aConfig[$sKey], $sKey);
}
echo '<h2>Check subdirs of key dataDir</h2>';
foreach (array(
$aConfig['dataDir'] . '/database',
$aConfig['dataDir'] . '/projects',
$aConfig['dataDir'] . '/sshkeys',
) as $sDir2Check) {
checkdir($sDir2Check, 'dataDir + [subdir]');
}
// ----------------------------------------------------------------------
echo '<h2>Check keys</h2>';
// check required keys in the config
foreach (array(
'auth',
'hooks',
'installPackages',
'lang',
'phases',
'projects',
) as $sKey) {
echo "Key [$sKey] ";
if (!array_key_exists($sKey, $aConfig)) {
echo '<span class="error">failed</span> missing key [$sKey] in config<br>';
$aErrors[] = "* missing key [$sKey] in config\n";
} else {
echo '<span class="ok">OK</span> exists<br>';
}
}
}
echo '<h2>Check required PHP modules</h2>';
echo 'PHP version: '.PHP_VERSION.'<br>'
. '<br>';
checkModule(array(
'PDO','curl', 'json', 'ldap', 'pdo_sqlite'
));
echo '<h2>Result</h2>';
if (count($aErrors)) {
echo showerror("FATAL ERROR in config.<br>" . implode("<br>\n", $aErrors));
} else {
echo showok('OK, check was successfully finished.');
}
// do not enable - it shows passwords...
// echo 'DEBUG: <pre>' . print_r($aConfig, 1) . '</pre>';
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment