aboutsummaryrefslogtreecommitdiff
path: root/src/Service/Installation.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-10-23 00:47:32 +0200
committerpolo <ordipolo@gmx.fr>2026-10-23 00:47:32 +0200
commitf27cca08ff786ceff1870147f6d6bad14d71117f (patch)
treed36597a72025313d6faf4ed228755fa267ebe2f6 /src/Service/Installation.php
parentc7309f900ef05bd5cb313110ec159b761af394ec (diff)
downloadcms-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.php109
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
4declare(strict_types=1);
5
6namespace App\Service;
7
8class 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