Tutoriel installation SMI sur NAS Synology ?

Installation, utilisation, paramétrage de SMI sous Gnu/Linux
Répondre
Mind Of Illusion
Nouveau membre
Messages : 5
Enregistré le : dim. févr. 21, 2016 10:45 pm

Tutoriel installation SMI sur NAS Synology ?

Message par Mind Of Illusion »

Bonjour à tous !

Je recherche un tutoriel d'installation de SMI sur un NAS Synology (comme indiqué dans le titre), qui expliquerai en détail les droits à attribuer à quel utilisateur ainsi que la façon dont il faut remplir le fichier de configuration ... j'ai réussi à faire cette installation sans trop de problèmes sous Windows (quoique ... après un changement de mot de passe sur le compte ROOT de ma base SQL, même après retour à l'ancien mot de passe, il est maintenant impossible de redémarrer ne serait-ce que la page d'accueil), mais impossible d'aller plus loin que la première page avec une bordée de messages d'erreur, quelle que soit la configuration que j'applique dans le fichier de configuration.

Donc, comment dire ... HELP ? :)

Merci d'avance !

Mind Of Illusion
Nouveau membre
Messages : 5
Enregistré le : dim. févr. 21, 2016 10:45 pm

Re: Tutoriel installation SMI sur NAS Synology ?

Message par Mind Of Illusion »

Je me répond à moi même afin d'ajouter une copie d'écran de ce qui m'arrive (et une transcription texte au passage) :

Image

Code : Tout sélectionner

' . _("Merci de le créer et de le télécharger dans le dossier inc"); } if ($messerr == '') { include_once('inc/config.inc.php'); // Contrôle dossier fichiers techniques if (is_dir($url_gfc)) { if ((!is_readable($url_gfc)) OR (!is_writable($url_gfc))) { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Problème sur le dossier des fichiers techniques "). ' : ' ._("dossier non accessible - vérifiez les droits"); } } else { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Problème sur le dossier des fichiers techniques ") .' : '. _("dossier non créé ou chemin mal paramétré"); } // Contrôle dossier de sauvegarde if (is_dir($url_svg)) { if ((!is_readable($url_svg)) OR (!is_writable($url_svg))) { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Problème sur le dossier de sauvegarde "). ' : ' ._("dossier non accessible - vérifiez les droits"); } } else { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Problème sur le dossier de sauvegarde ") .' : '. _("dossier non créé ou chemin mal paramétré"); } // Contrôle dossier des icônes if (is_dir('./icones')) { if (!is_readable('./icones')) { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Problème sur le dossier des icones "). ' : ' ._("dossier non accessible - vérifiez les droits"); } } else { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Problème sur le dossier des icones ") .' : '. _("dossier non créé ou chemin mal paramétré"); } // Contrôle dossier des logos if (is_dir('./logos')) { if ((!is_readable('./logos')) OR (!is_writable('./logos'))) { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Problème sur le dossier des logos "). ' : ' ._("dossier non accessible - vérifiez les droits"); } } else { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Problème sur le dossier des logos ") .' : '. _("dossier non créé ou chemin mal paramétré"); } // Détection de l'OS du serveur $windows = 0; $unix = 0; $os = getenv('OS'); if (empty($os)) { $os = php_uname(); } if (empty($os)) { $os = '-'; $unix = 1; } else { if (preg_match("/^Win.*/", $os)) { $windows = 1; } else { $unix = 1; } } // Fileperms ne fonctionne correctement que sous Unix/Linux if ($unix == 1) { // On vérifie que les droits le répertoire inc sont ok $droits = substr(sprintf('%o', fileperms('./inc')), -4); if (($droits == '0775') OR ($droits == '0757') OR ($droits == '0777')) { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Les droits sur le répertoire inc ne sont pas corrects") . ' (' . $droits . ")

" . _("Merci de ne pas utiliser '0775', '0757', ou '0777'"); } // On vérifie que les droits sur prm.inc.php sont ok $droits = substr(sprintf('%o', fileperms('./inc/prm.inc.php')), -4); if ($droits != '0644') { if ($messerr <> '') { $messerr .= '

'; } $messerr .= _("Les droits sur le fichier prm.inc.php ne sont pas corrects") . ' (' . $droits . ").

" . _("Merci de corriger en '0644'"); } } // Tout est ok...on démarre if ($messerr == '') { include_once('inc/func.inc.php'); include_once('inc/func_fic.inc.php'); include_once('inc/func_log.inc.php'); include_once('inc/func_txt.inc.php'); include_once('classes/ezSQL/shared/ez_sql_core.php'); include_once('classes/ezSQL/mysqli/ez_sql_mysqli.php'); include_once('inc/func_sql.inc.php'); // Archivage du log Archivelog(valsession('code_log')); // Variables Formulaire fix_magic_quotes(); $_POST = clean_str($_POST); $log_ip = $_SERVER['REMOTE_ADDR']; // Récupération adresse IP // Vérifie si l'administrateur a été créé (si non, il est créé) $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8'); //$db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8'); $sql = "SELECT COUNT(*) FROM `" . TBPW . "` WHERE `pw_code` = '" . $db->escape($admin_code) . "'"; $nb_rs = $db->get_var($sql); if ($nb_rs == 0) { $pass = md5($admin_mdp); // Cryptage du mot de passe administrateur $sql2 = "INSERT INTO `" . TBPW . "`"; $sql2 .= " (pw_code,pw_pass,pw_level,pw_lastsuccess,pw_lastip,pw_actif) VALUES"; $sql2 .= " ('" . $db->escape($admin_code) . "','" . $db->escape($pass) . "','9','$dateheurea','$log_ip','1')"; $db->query($sql2); } // On crée le répertoire imports pour l'administrateur et le siège // Si le sous-répertoire spécifique aux imports n'existe pas, on le crée $tab_gfc = explode('/', str_ireplace($root, '', $url_gfc)); $chemin = substr($root, 0, strlen($root)); foreach ($tab_gfc as $idx => $value) { $chemin = $chemin . '/' . $value; $result = cree_dir($chemin); } $rep = $url_gfc . '/imports'; if (cree_dir($rep)) { $desc = _("Dossier pour imports administrateur & centre de gestion"); $detail = _("Dossier de stockage des fichiers pour import par l'administrateur et le centre de gestion"); $sql2 = "INSERT INTO `" . TBFIC . "`"; $sql2 .= " (fic_nom,fic_type,fic_desc,fic_detail,fic_datecrea,fic_codecrea,fic_nbtel) VALUES"; $sql2 .= " ('" . $db->escape($rep) . "','0','" . $db->escape($desc) . "','" . $db->escape($detail) . "','$datea','" . $db->escape($admin_code) . "','')"; $db->query($sql2); } // On crée le répertoire pièce jointes pour l'administrateur et le siège // Si le sous-répertoire spécifique aux pièces n'existe pas, on le crée $rep = $url_gfc . '/pj'; if (cree_dir($rep)) { $desc = _("Dossier pour PJ administrateur & centre de gestion"); $detail = _("Dossier de stockage des PJ administrateur et centre de gestion"); $sql2 = "INSERT INTO `" . TBFIC . "`"; $sql2 .= " (fic_nom,fic_type,fic_desc,fic_detail,fic_datecrea,fic_codecrea,fic_nbtel) VALUES"; $sql2 .= " ('" . $db->escape($rep) . "','0','" . $db->escape($desc) . "','" . $db->escape($detail) . "','$datea','" . $db->escape($admin_code) . "','0')"; $db->query($sql2); } close_database(); $validpwd = False; $desactive = False; // Formulaire validé if (valpost('submit') == _("Connexion")) { // Récupération Variables Formulaire $con_code = valpost('con_code'); $con_pass = md5(valpost('con_pass')); if (!$validpwd) { // Contrôle du mot de passe $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8'); $sql = "SELECT * FROM `" . TBPW . "` WHERE `pw_code` = '" . $db->escape($con_code) . "'"; $row = $db->get_row($sql, ARRAY_A); if ($row) { extract($row); if ($con_code == $pw_code) // Le code entré doit correspondre exactement au code stocké (majuscules/minuscules) { if ($pw_pass == $con_pass) // Le mot de passe doit correspondre exactement { if ($pw_actif == 1) // Le compte doit être actif { if (trim(valpost('con_lng')) <> '') { $_SESSION['lng'] = strtolower(valpost('con_lng')); } else { $_SESSION['lng'] = strtolower($pw_lng); } if (trim(valpost('con_pays')) <> '') { $_SESSION['codepays'] = strtoupper(valpost('con_pays')); } else { $_SESSION['codepays'] = strtoupper($pw_pays); } // On récupère les données de localisation du pays $sql = "SELECT * FROM `" . TBPAYS . "` WHERE `pays_code` = '" . $db->escape($_SESSION['codepays']) . "'"; $row = $db->get_row($sql, ARRAY_A); if ($row) { extract($row); } else { $_SESSION['codepays'] = strtoupper(PAYS_DEFAULT); $sql = "SELECT * FROM `" . TBPAYS . "` WHERE `pays_code` = '" . $db->escape($_SESSION['codepays']) . "'"; $row2 = $db->get_row($sql, ARRAY_A); if ($row2) { extract($row2); } } $_SESSION['num_nbdec'] = $pays_nbdec; $_SESSION['num_cardec'] = $pays_cardec; $_SESSION['num_carsep'] = $pays_carsep; $_SESSION['date_fmt'] = $pays_datefmt; $_SESSION['date_fmtshort'] = $pays_datefmtshort; $_SESSION['date_fmtfull'] = $pays_datefmtfull; $_SESSION['etat_log'] = 'connecte'; $_SESSION['niv_log'] = $pw_level; $_SESSION['code_log'] = $con_code; $_SESSION['code_age'] = ''; $_SESSION['code_do'] = ''; $_SESSION['code_st'] = ''; $_SESSION['id_ccli'] = 0; $_SESSION['mod'] = $pw_modele; // Codes session complémentaires switch ($pw_level) { // Code agence case 4 : $_SESSION['code_age'] = $con_code; break; // Code technicien agence case 3 : $sql2 = "SELECT tec_codeage FROM `" . TBTEC . "` WHERE `tec_code` = '" . $db->escape($con_code) . "'"; $row2 = $db->get_row($sql2, ARRAY_A); if ($row2) { extract($row2); $_SESSION['code_age'] = $tec_codeage; } break; // Code donneur d'ordres case 6 : $_SESSION['code_do'] = $con_code; break; // Code technicien donneur d'ordres case 7 : $sql2 = "SELECT tec_codedo FROM `" . TBTEC . "` WHERE `tec_code` = '" . $db->escape($con_code) . "'"; $row2 = $db->get_row($sql2, ARRAY_A); if ($row2) { extract($row2); $_SESSION['code_do'] = $tec_codedo; } break; // Code Sous-traitant case 10 : $_SESSION['code_st'] = $con_code; break; // Code technicien sous-traitant case 11 : $sql2 = "SELECT tec_codest FROM `" . TBTEC . "` WHERE `tec_code` = '" . $db->escape($con_code) . "'"; $row2 = $db->get_row($sql2, ARRAY_A); if ($row2) { extract($row2); $_SESSION['code_st'] = $tec_codest; } break; // Code contact client case 12 : $_SESSION['niv_log'] = 1; $sql2 = "SELECT ccli_id,ccli_codecli FROM `" . TBCCLI . "` WHERE `ccli_code` = '" . $db->escape($con_code) . "'"; $row2 = $db->get_row($sql2, ARRAY_A); if ($row2) { extract($row2); $_SESSION['code_log'] = $ccli_codecli; $_SESSION['id_ccli'] = $ccli_id; } break; } $sql2 = "UPDATE `" . TBPW . "` SET `pw_lastsuccess`='" . $dateheurea . "', `pw_lastip`='" . $log_ip . "' WHERE `pw_id`='" . $pw_id . "'"; $db->query($sql2); $validpwd = TRUE; } else { $desactive = TRUE; } } } } close_database(); } } } } ?> '') { echo $messerr; exit(); } if (valsession('etat_log') <> 'connecte') { ?>

<?PHP echo _(">

<?PHP echo _(">

  	 
	
	
	
	get_results($rech, ARRAY_A); close_database(); cre_select_tab('pays', 'pays', $rows, 'pays_code', 'pays_nom', '', $_SESSION['codepays'], '', _("-- Faites votre choix --"), 1, FALSE, '', '', FALSE); ?>
  	 

">

">

' . _("Mauvais codes de connexion") . '

'; } } else { echo '

' . _("Compte désactivé") . '
'; } } ?>


S.M.I. (Services Maintenance Interventions)






"/>

Galawa
Site Admin
Messages : 1362
Enregistré le : jeu. févr. 22, 2007 11:26 am
Contact :

Re: Tutoriel installation SMI sur NAS Synology ?

Message par Galawa »

Bonjour,

Cela "sent" bien que le module php n'est pas chargé dans votre serveur ou que le serveur web ne sait pas interpréter les fichiers php

Merci.

Galawa
Gestionnaire du projet SMI

Mind Of Illusion
Nouveau membre
Messages : 5
Enregistré le : dim. févr. 21, 2016 10:45 pm

Re: Tutoriel installation SMI sur NAS Synology ?

Message par Mind Of Illusion »

Bonsoir,

Je ne pense pas, d'autant plus que mes "symptômes" ont évolué.

Compte tenu du fait que cela ne fonctionnait toujours pas, j'ai pris la décision de supprimer le répertoire SMI, mais de conserver la base.

Ensuite, j'ai installé Dolybarr, sans aucun problème (je n'ai fait que donner les droits en écriture et en lecture à l'utilisateur HTTP, qui semble être l'utilisateur par défaut lorsque l'on se connecte via un navigateur à un site hébergé sur un NAS Synology).

Enfin, j'ai redécompressé l'archive de SMI, renseigné le fichier de configuration, modifié les droits de la même manière que pour Dolybarr sur le répertoire entier (j'expérimente), et là ... rien du tout. Lorsque j'essaye de charger la page index.php, le chargement se poursuit sans jamais aboutir complètement (j'ai souvenir d'avoir vu une cinquantaine de caractères s'afficher au bout d'un très long moment, juste avant que le chargement ne s'arrête de lui même). Là, il s'agit peut être d'un problème de configuration de PHP, je ne sais pas.

Quoi qu'il en soit, je suis surpris que personne n'ait jamais installé SMI sur un NAS Synology, ou n'ai jamais senti qu'il serait utile de partager l'expérience ... (un petit peu de provoc' va peut être faire venir les personnes citées ? :)).

Merci pour votre réponse, en tout cas !

Edit : petite différence : sur le screenshot, je tentais une install en utilisant Tomcat (d'où le port). J'ai fini par laisser tomber en voyant que ce n'était pas nécessaire pour faire tourner Dolibarr, et dans le doute d'une mauvaise configuration ... du coup, j'utilise le service web intégré du NAS.

Galawa
Site Admin
Messages : 1362
Enregistré le : jeu. févr. 22, 2007 11:26 am
Contact :

Re: Tutoriel installation SMI sur NAS Synology ?

Message par Galawa »

Bonjour,

Si le code source s'affiche sans exécution du logiciel, c'est que le code PHP n'est pas interprété (CQFD).

D'où ma réponse...

Après, c'est peut être simplement une histoire de droits d'exécution sur le dossier du logiciel.

Bonne journée.

Galawa
Gestionnaire du projet SMI

Répondre