conf Schreibrechte besitzen. Wenn diese passen klicken Sie auf ok (Diese Meldung dann ignorieren).'; $setup[1]['action'] = "CheckDirRights"; /* ----------------- STEP 2 ----------------- */ $setup[2]['description'] = 'Schritt 2 - Datenbank-Einstellungen'; $setup[2]['configfile'] = "user.inc.php"; $setup[2]['fields']['WFdbhost']['text'] = "Host"; $setup[2]['fields']['WFdbhost']['default'] = "localhost"; $setup[2]['fields']['WFdbname']['default'] = "Datenbank"; $setup[2]['fields']['WFdbuser']['default'] = "Benutzername"; $setup[2]['fields']['WFdbpass']['text'] = "Passwort"; $setup[2]['fields']['WFdbpass']['type'] = "password"; $setup[2]['action'] = "CheckDatabase"; /* ----------------- STEP 3 ----------------- */ $setup[3]['description'] = 'Schritt 3 - Pfad für Dateien'; $setup[3]['configfile'] = "user.inc.php"; $setup[3]['fields']['WFuserdata']['text'] = "Userdata-Ordner"; $setup[3]['fields']['WFuserdata']['default'] = str_replace("www\setup","userdata",str_replace("www/setup","userdata",getcwd())); $setup[3]['fields']['MainData']['invisible'] = "true"; $setup[3]['fields']['MainData']['readonly'] = "true"; $setup[3]['fields']['MainData']['sql'] = "../../database/struktur.sql"; /* $setup[3]['fields']['InitialData']['invisible'] = "true"; $setup[3]['fields']['InitialData']['readonly'] = "true"; $setup[3]['fields']['InitialData']['sql'] = "../../database/init.sql";*/ /* $setup[3]['fields']['MainData']['invisible'] = "true"; $setup[3]['fields']['MainData']['readonly'] = "true"; $setup[3]['fields']['MainData']['sql'] = "../../database/main.sql"; $setup[3]['fields']['InitialData']['invisible'] = "true"; $setup[3]['fields']['InitialData']['readonly'] = "true"; $setup[3]['fields']['InitialData']['sql'] = "../../database/initial.sql";*/ $setup[3]['action'] = "CreateUserdata"; /* ----------------- STEP 4 ----------------- */ $setup[4]['description'] = 'Schritt 4 - Testdaten'; $setup[4]['configfile'] = "user.inc.php"; $setup[4]['fields']['BeispielTpl']['text'] = "Testdaten einspielen (mit Beispiel Artikel, Adressen usw.)"; $setup[4]['fields']['BeispielTpl']['type'] = "checkbox"; $setup[4]['fields']['BeispielTpl']['value'] = "1"; $setup[4]['fields']['BeispielTpl']['readonly'] = "true"; $setup[4]['fields']['BeispielTpl']['sql'] = "../../database/beispiel.sql"; /* $setup[4]['fields']['MailTpl']['text'] = "E-Mail Templates einspielen"; $setup[4]['fields']['MailTpl']['type'] = "checkbox"; $setup[4]['fields']['MailTpl']['value'] = "1"; $setup[4]['fields']['MailTpl']['readonly'] = "true"; $setup[4]['fields']['MailTpl']['sql'] = "../../database/emailtemplates.sql"; $setup[4]['fields']['DhlZones']['text'] = "DHL-Zonen einspielen"; $setup[4]['fields']['DhlZones']['type'] = "checkbox"; $setup[4]['fields']['DhlZones']['value'] = "1"; $setup[4]['fields']['DhlZones']['readonly'] = "true"; $setup[4]['fields']['DhlZones']['sql'] = "../../database/dhlzones.sql"; $setup[4]['fields']['Testdata']['text'] = "Mustershop-Datensätze einspielen"; $setup[4]['fields']['Testdata']['type'] = "checkbox"; $setup[4]['fields']['Testdata']['value'] = "1"; $setup[4]['fields']['Testdata']['readonly'] = "true"; $setup[4]['fields']['Testdata']['sql'] = "../../database/shopdata.sql"; $setup[4]['fields']['ArticleData']['text'] = "Beispielartikel einspielen (nur mit Mustershop-Option)"; $setup[4]['fields']['ArticleData']['type'] = "checkbox"; $setup[4]['fields']['ArticleData']['value'] = "1"; $setup[4]['fields']['ArticleData']['readonly'] = "true"; $setup[4]['fields']['ArticleData']['sql'] = "../../database/testarticles.sql";*/ /* ------------------------- Functions ------------------------- */ /** * @param string $name * * @return bool */ function hasExectuableExtension($name) { if (!function_exists('exec')) { return false; } if (!is_string($name)) { return false; } exec(sprintf('whereis %s',$name), $out); if (empty($out)) { return false; } $result = $out[0]; $resultExploded = explode(':', $result); array_shift($resultExploded); return !empty(trim(implode("",$resultExploded))); } function pruefe($step) { if($step == 1) { $tmpfile = md5(microtime(true)); if(!($fh = fopen('../../conf/'.$tmpfile,'w'))) { $tmp['status'] = 'error'; $tmp['text'] = 'Der Ordner conf besitzt unzureichende Schreibrechte'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'Der Ordner conf besitzt Schreibrechte'; $ret[] = $tmp; fclose($fh); unlink('../../conf/'.$tmpfile); } if(!($fh = fopen('../../backup/'.$tmpfile,'w'))) { $tmp['status'] = 'error'; $tmp['text'] = 'Der Ordner backup besitzt unzureichende Schreibrechte'; $ret[] = $tmp; } else { fclose($fh); unlink('../../backup/'.$tmpfile); $tmp['status'] = 'ok'; $tmp['text'] = 'Der Ordner backup besitzt Schreibrechte'; $ret[] = $tmp; } if(!($fh = fopen('../../userdata/'.$tmpfile,'w'))) { $tmp['status'] = 'error'; $tmp['text'] = 'Der Ordner userdata besitzt unzureichende Schreibrechte'; $ret[] = $tmp; } else { fclose($fh); $eigenguser = fileowner('../../userdata/'.$tmpfile); $eigengroup = filegroup('../../userdata/'.$tmpfile); $uploaduser = fileowner(__FILE__); $uploadgroup = filegroup(__FILE__); if($eigenguser !== $uploaduser) { $tmp['status'] = 'warning'; $tmp['text'] = 'Die Dateieigentümer stimmten nicht mit dem des Webservers überein'; $ret[] = $tmp; } else { } unlink('../../userdata/'.$tmpfile); $tmp['status'] = 'ok'; $tmp['text'] = 'Der Ordner userdata besitzt Schreibrechte'; $ret[] = $tmp; } TryCreateCacheDir(); if(!($fh = fopen('../cache/'.$tmpfile,'w'))) { $tmp['status'] = 'error'; $tmp['text'] = 'Der Ordner www/cache besitzt unzureichende Schreibrechte'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'Der Ordner www/cache besitzt Schreibrechte'; $ret[] = $tmp; fclose($fh); unlink('../cache/'.$tmpfile); } /* $rights = substr(sprintf('%o', fileperms('../../conf')), -3, 1); if($rights!='7') { $tmp['status'] = 'error'; $tmp['text'] = 'Der Ordner conf besitzt unzureichende Schreibrechte'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'Der Ordner conf besitzt Schreibrechte'; $ret[] = $tmp; }*/ if(!function_exists('fsockopen')) { $tmp['status'] = 'error'; $tmp['text'] = 'fsocket nicht installiert!'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'fsocket verfügbar'; $ret[] = $tmp; } if(!function_exists('mysqli_connect')) { $tmp['status'] = 'error'; $tmp['text'] = 'MYSQLi nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'MYSQLi verfügbar'; $ret[] = $tmp; } if(!extension_loaded('mysqlnd')) { $tmp['status'] = 'error'; $tmp['text'] = 'Mysqlnd nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'Mysqlnd verfügbar'; $ret[] = $tmp; } if(!class_exists('\PDO')) { $tmp['status'] = 'error'; $tmp['text'] = 'PDO nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'PDO verfügbar'; $ret[] = $tmp; } if(!function_exists('curl_init')) { $tmp['status'] = 'error'; $tmp['text'] = 'cURL nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'cURL verfügbar'; $ret[] = $tmp; } if(!function_exists('stream_socket_enable_crypto')) { $tmp['status'] = 'error'; $tmp['text'] = 'stream_socket_enable_crypto nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'stream_socket_enable_crypto verfügbar'; $ret[] = $tmp; } if(!function_exists('openssl_error_string')) { $tmp['status'] = 'warning'; $tmp['text'] = 'OpenSSL nicht installiert (optional)'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'OpenSSL verfügbar'; $ret[] = $tmp; } if(!class_exists('SoapClient')) { $tmp['status'] = 'warning'; $tmp['text'] = 'php-soap nicht installiert (optional)'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'php-soap verfügbar'; $ret[] = $tmp; } if(!function_exists('imap_open')) { $tmp['status'] = 'error'; $tmp['text'] = 'imap nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'imap verfügbar'; $ret[] = $tmp; } if(!function_exists('simplexml_load_string')) { $tmp['status'] = 'error'; $tmp['text'] = 'php-xml nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'php-xml verfügbar'; $ret[] = $tmp; } if(!function_exists('mb_encode_numericentity')) { $tmp['status'] = 'error'; $tmp['text'] = 'php-mbstring nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'php-mbstring verfügbar'; $ret[] = $tmp; } if(!class_exists('ZipArchive')) { $tmp['status'] = 'error'; $tmp['text'] = 'php-zip nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'php-zip verfügbar'; $ret[] = $tmp; } if(!hasExectuableExtension('zip')) { $tmp['status'] = 'warning'; $tmp['text'] = 'zip-extension nicht installiert'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'zip-extension verfügbar'; $ret[] = $tmp; } if(!function_exists('imagejpeg')) { $tmp['status'] = 'warning'; $tmp['text'] = 'PHP GD-Erweiterung nicht installiert (optional)'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'PHP GD-Erweiterung verfügbar'; $ret[] = $tmp; } if(!function_exists('ldap_connect')) { $tmp['status'] = 'warning'; $tmp['text'] = 'PHP LDAP-Erweiterung nicht installiert (optional)'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'PHP LDAP-Erweiterung verfügbar'; $ret[] = $tmp; } if(!function_exists('ioncube_loader_version')) { $tmp['status'] = 'warning'; $tmp['text'] = 'Ioncube ist nicht installiert (Eine Installation ist trotzdem möglich)'; $ret[] = $tmp; } else { $ioncube_loader_version = ioncube_loader_version(); if($ioncube_loader_version[0]< 5 && $ioncube_loader_version[1] == '.') { $tmp['status'] = 'warning'; $tmp['text'] = 'Die Ioncubeversion ist zu alt (Eine Installation ist trotzdem möglich)'; $ret[] = $tmp; }else{ $tmp['status'] = 'ok'; $tmp['text'] = 'Ioncube verfügbar'; $ret[] = $tmp; } } if(!file_exists("../../database/struktur.sql")) { $tmp['status'] = 'error'; $tmp['text'] = 'Initial Datenbanken nicht vorhanden'; $ret[] = $tmp; } if(!file_exists("../../database/beispiel.sql")) { $tmp['status'] = 'warning'; $tmp['text'] = 'Beispiel-Datenbanken nicht vorhanden'; $ret[] = $tmp; } $memory_limit = @ini_get('memory_limit'); $post_max_size = @ini_get('client_max_body_size'); if($post_max_size == '')$post_max_size = @ini_get('post_max_size'); if(!$memory_limit) { $tmp['status'] = 'warning'; $tmp['text'] = 'Es war nicht möglich den verfügbaren RAM zu ermitteln. Es werden mindestens 128 MB empfohlen'; $ret[] = $tmp; }else{ if(strpos($memory_limit, 'M') !== false) { $memory_limit = str_replace('M','', $memory_limit); $memory_limit *= 1024*1024; } $memory_changed = $memory_limit; if($memory_limit < 128000000) { $memory_changed = @ini_set('memory_limit', 512*1024*1024); if(strpos($memory_changed, 'M') !== false) { $memory_changed = str_replace('M','', $memory_changed); $memory_changed *= 1024*1024; } } if($memory_changed < 128000000) { $tmp['status'] = 'warning'; $tmp['text'] = 'Es sind nur '.round($memory_changed/(1024*1024)).' MB RAM verfügbar Es werden mindestens 128 MB empfohlen'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'Ausreichend RAM verfügbar (>=128MB)'; $ret[] = $tmp; } } $post_max_size = @ini_get('post_max_size'); if(!$post_max_size) { $tmp['status'] = 'warning'; $tmp['text'] = 'Es war nicht möglich die verfügbare Upload-Kapazität zu ermitteln. Es werden mindestens 8 MB empfohlen'; $ret[] = $tmp; }else{ if(strpos($post_max_size, 'M') !== false) { $post_max_size = str_replace('M','', $post_max_size); $post_max_size *= 1024*1024; }elseif(strpos($post_max_size, 'K') !== false) { $post_max_size = str_replace('K','', $post_max_size); $post_max_size *= 1024; } if($post_max_size < 8*1024*1024) { $tmp['status'] = 'warning'; $tmp['text'] = 'Es sind nur '.round($post_max_size/(1024*1024)).' MB Datei-Upload möglich. Empfohlen werden mindestens 8 MB'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'Ausreichend Upload-Kapazität verfügbar (>=8MB)'; $ret[] = $tmp; } } $max_execution_time = @ini_get('fastcgi_read_timeout'); if($max_execution_time == '')$max_execution_time = @ini_get('max_execution_time'); if(!$max_execution_time) { $tmp['status'] = 'warning'; $tmp['text'] = 'Es war nicht möglich die verfügbare Upload-Kapazität zu ermitteln. Es werden mindestens 8 MB empfohlen'; $ret[] = $tmp; }else{ if($max_execution_time < 30) { $tmp['status'] = 'warning'; $tmp['text'] = 'Es stehen nur '.($max_execution_time).' Sekunden Scriptlauftzeit zur verfügung. Es werden mindestens 30 Sekunden empfohlen'; $ret[] = $tmp; } else { $tmp['status'] = 'ok'; $tmp['text'] = 'Es steht genügend Scriptlauftzeit zur verfügung (>= 30 Sekunden).'; $ret[] = $tmp; } } if(PHP_VERSION < 7.2) { $tmp['status'] = 'warning'; $tmp['text'] = 'Die PHP Version ist unter 7.2. Ab Xentral 20.2 wird mindestens PHP 7.2 benötigt'; $ret[] = $tmp; } $fopenUrlEnabled = ini_get('allow_url_fopen'); $fopenUrlEnabled = strtolower($fopenUrlEnabled); if(!in_array($fopenUrlEnabled, ['1', 'true', 'on'])){ $ret[] = [ 'status' => 'warning', 'text' => 'allow_url_fopen ist nicht in der php.ini aktiviert' ]; } return $ret; } return false; } function CreateUserdata() { foreach($_SESSION['setup'] as $file=>$vars) { $out = "$value) { if($key == 'WFuserdata') { if(!is_dir($value)) { return 'Userdata-Ordner nicht vorhanden!'; } if(!is_dir($value.'/dms'))mkdir($value.'/dms',0777); if(!is_dir($value.'/tmp'))mkdir($value.'/tmp',0777); if(!is_dir($value.'/pdfmirror'))mkdir($value.'/pdfmirror',0777); if(!is_dir($value.'/emailbackup'))mkdir($value.'/emailbackup',0777); } } } return ''; } function stepMessage($step) { $erg = pruefe($step); $ret = ''; if($erg){ if($step == 1) { $ret = '