diff options
| author | polo <ordipolo@gmx.fr> | 2026-10-23 00:47:32 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2026-10-23 00:47:32 +0200 |
| commit | f27cca08ff786ceff1870147f6d6bad14d71117f (patch) | |
| tree | d36597a72025313d6faf4ed228755fa267ebe2f6 /src/Service/Installation.php | |
| parent | c7309f900ef05bd5cb313110ec159b761af394ec (diff) | |
| download | cms-f27cca08ff786ceff1870147f6d6bad14d71117f.tar.gz cms-f27cca08ff786ceff1870147f6d6bad14d71117f.tar.bz2 cms-f27cca08ff786ceff1870147f6d6bad14d71117f.zip | |
dossiers avec majuscule, namespace pour toutes les classes, autoload psr-4, UserDataService::createZip déplacé dans Backup
Diffstat (limited to 'src/Service/Installation.php')
| -rw-r--r-- | src/Service/Installation.php | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/Service/Installation.php b/src/Service/Installation.php new file mode 100644 index 0000000..ed9f20a --- /dev/null +++ b/src/Service/Installation.php | |||
| @@ -0,0 +1,109 @@ | |||
| 1 | <?php | ||
| 2 | // src/Service/Installation.php | ||
| 3 | |||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 6 | namespace App\Service; | ||
| 7 | |||
| 8 | class Installation | ||
| 9 | { | ||
| 10 | static public function phpDependancies(): void | ||
| 11 | { | ||
| 12 | $flag = false; | ||
| 13 | $extensions = ['pdo_mysql', 'mbstring', 'ctype', 'json', 'tokenizer', 'imagick', 'zip']; // les 5 premières sont pour doctrine | ||
| 14 | // ajouter plus tard zlib pour la compression des backups | ||
| 15 | foreach($extensions as $extension){ | ||
| 16 | if(!extension_loaded($extension)){ | ||
| 17 | echo("<p>L'extension <b>" . $extension . "</b> est manquante.</p>"); | ||
| 18 | $flag = true; | ||
| 19 | } | ||
| 20 | } | ||
| 21 | if(!class_exists(\DOMDocument::class)){ // théoriquement plus fiable que extension_loaded() | ||
| 22 | echo("<p>L'extension <b>dom</b> est manquante.</p>"); | ||
| 23 | $flag = true; | ||
| 24 | } | ||
| 25 | |||
| 26 | /*if(!extension_loaded('imagick') && !extension_loaded('gd')){ | ||
| 27 | echo("<p>il manque une de ces extensions au choix pour le traitement des images: <b>imagick</b> (de préférence) ou <b>gd</b>.</p>"); | ||
| 28 | $flag = true; | ||
| 29 | }*/ | ||
| 30 | // si imagick n'est pas disponible, essayer gd (reste encore à coder) | ||
| 31 | |||
| 32 | if($flag){ | ||
| 33 | echo '<p>Réalisez les actions nécéssaires sur le serveur ou contactez l\'administrateur du site.<br> | ||
| 34 | Quand le problème sera résolu, il vous suffira de <a href="#">recharger la page<a>.</p>'; | ||
| 35 | die; | ||
| 36 | } | ||
| 37 | } | ||
| 38 | |||
| 39 | static public function checkFilesAndFoldersRights(): void | ||
| 40 | { | ||
| 41 | // -- droits des fichiers et dossiers -- | ||
| 42 | $droits_dossiers = 0777; | ||
| 43 | |||
| 44 | $flag = false; | ||
| 45 | if(!file_exists('user_data')){ | ||
| 46 | try{ | ||
| 47 | mkdir('user_data/'); | ||
| 48 | chmod('user_data/', $droits_dossiers); | ||
| 49 | } | ||
| 50 | catch(\Exception $e){ | ||
| 51 | echo '<p style="color: red;">Le dossier public/user_data introuvable et le serveur n\'a pas la permission de le créer.<br> | ||
| 52 | Pour faire ça bien:<br>sudo -u "serveur web" mkdir /chemin/du/site/public/user_data</p>'; | ||
| 53 | echo $e; | ||
| 54 | $flag = true; | ||
| 55 | } | ||
| 56 | } | ||
| 57 | if(!file_exists('../var')){ | ||
| 58 | try{ | ||
| 59 | mkdir('../var'); | ||
| 60 | chmod('../var', $droits_dossiers); | ||
| 61 | } | ||
| 62 | catch(\Exception $e){ | ||
| 63 | echo $e; | ||
| 64 | $flag = true; | ||
| 65 | } | ||
| 66 | } | ||
| 67 | if(!file_exists('../var/backups')){ | ||
| 68 | try{ | ||
| 69 | mkdir('../var/backups'); | ||
| 70 | chmod('../var/backups', $droits_dossiers); // autoriser à la fois le serveur et les scripts dans bin/ | ||
| 71 | } | ||
| 72 | catch(\Exception $e){ | ||
| 73 | echo $e; | ||
| 74 | $flag = true; | ||
| 75 | } | ||
| 76 | } | ||
| 77 | |||
| 78 | // droits 600 pour celui-ci | ||
| 79 | if(!file_exists('../config/config.ini')){ | ||
| 80 | // aide à la création du config.ini | ||
| 81 | echo '<p>Le fichier config/config.ini est introuvable.</p>'; | ||
| 82 | echo '<p>Il doit obligatoirement contenir les codes de la base de données, le protocole http ou https (et éventuellement le port) utilisé pour créer les liens internes.<br> | ||
| 83 | Un modèle est disponible, il s\'agit du fichier config/config-template.ini</p> | ||
| 84 | <p>Ce fichier a une importance critique. Si vous le pouvez faites en sorte que le serveur en soit le propriétaire et donner lui des droits 600.</p>'; | ||
| 85 | $flag = true; | ||
| 86 | } | ||
| 87 | /*else{ | ||
| 88 | // propriétaire du fichier | ||
| 89 | if(fileowner('../config/config.ini') != posix_geteuid()){ | ||
| 90 | echo "<p>le fichier config/config.ini n'appartient pas au serveur.</p>"; | ||
| 91 | } | ||
| 92 | else{ | ||
| 93 | // droits du config.ini | ||
| 94 | if(substr(sprintf('%o', fileperms('../config/config.ini')), -4) != 600){ | ||
| 95 | echo '<p>Attention, le </p>'; | ||
| 96 | //chmod('../config/config.ini', $droits_fichiers); | ||
| 97 | } | ||
| 98 | } | ||
| 99 | }*/ | ||
| 100 | if($flag){ | ||
| 101 | die; | ||
| 102 | } | ||
| 103 | |||
| 104 | // tester les liens internes | ||
| 105 | // | ||
| 106 | |||
| 107 | // le test de connexion à la BDD est dans le doctrine bootstrap | ||
| 108 | } | ||
| 109 | } \ No newline at end of file | ||
