diff options
Diffstat (limited to 'controller/installation.php')
-rw-r--r-- | controller/installation.php | 92 |
1 files changed, 37 insertions, 55 deletions
diff --git a/controller/installation.php b/controller/installation.php index 1c90026..b2a687c 100644 --- a/controller/installation.php +++ b/controller/installation.php | |||
@@ -1,54 +1,36 @@ | |||
1 | <?php | 1 | <?php |
2 | // controller/installation.php | ||
3 | |||
2 | // premier démarrage du site | 4 | // premier démarrage du site |
3 | function installation() | 5 | function installation() |
4 | { | 6 | { |
5 | // les chemins dans le .htaccess seront des chemins relatifs, | 7 | // présence du .htaccess |
6 | // la racine dépendant du serveur, donc de l'hébergeur, | ||
7 | // par défaut c'est /var/www/ pour debian, etc | ||
8 | // c'est /var/www/nom_de_domaine/ avec des hôtes virtuels | ||
9 | // on utilisera donc des chemins adaptés à des hôtes virtuels | ||
10 | |||
11 | // le nom du serveur sera le nom de domaine tout court | ||
12 | // la racine sera /var/www/nom_de_domaine | ||
13 | |||
14 | //echo('document root: ' . $_SERVER['DOCUMENT_ROOT'] . '<br />'); | ||
15 | //echo('server name: ' . $_SERVER['SERVER_NAME'] . '<br /'); | ||
16 | // echo('getcwd: ' . getcwd() . '<br />'); | ||
17 | // echo('dirname: ' . dirname(__FILE__) . '<br />'); | ||
18 | // echo('file: ' . __FILE__ . '<br />'); | ||
19 | // echo('dir: ' . __DIR__. '<br />'); | ||
20 | |||
21 | //$lien_htaccess = $_SERVER['SERVER_NAME'] . "/.htaccess"; | ||
22 | //$nomDuSite = "melaine"; | ||
23 | |||
24 | // créer le .htaccess | ||
25 | if(!file_exists(".htaccess")) | 8 | if(!file_exists(".htaccess")) |
26 | { | 9 | { |
27 | echo('<p style="color: red;" >Le .htaccess semble absent ce qui rend le site vulnérable, veuillez contacter l\'administrateur.</p>'); | 10 | $contenu = "ErrorDocument 404 /erreur404.php"; |
28 | //$contenu = "# redirection en cas d'erreur 404\nErrorDocument 404 http://" . $_SERVER['SERVER_NAME'] . "/" . $nomDuSite . "/erreur404.php\n# Interdire exploration du répertoire\nOptions All -Indexes"; | 11 | |
12 | echo('<p style="color: orange; text-align:center;" >Le .htaccess est absent.<br/> | ||
13 | Si vous ne savez pas de quoi il s\'agit, contactez le responsable du site.<br/> | ||
14 | Sinon, veuillez créer un fichier nommé .htaccess à la racine du site et y copier-coller la ligne suivante:<br/><br/> | ||
15 | <i>' . $contenu . '</i></p>'); | ||
16 | |||
17 | // Pour le créer | ||
18 | // laisser commenté, la création risque d'échouer | ||
29 | // $fichier = fopen('.htaccess', 'w'); | 19 | // $fichier = fopen('.htaccess', 'w'); |
30 | // fputs($fichier, $contenu); | 20 | // fputs($fichier, $contenu); |
31 | // fclose($fichier); | 21 | // fclose($fichier); |
32 | // chmod('.htaccess', 0666); // mettre 0644 en production | 22 | // chmod('.htaccess', 0666); // mettre 0644 en production |
33 | } | 23 | } |
34 | 24 | ||
35 | // droits en lecture et écriture dans le cas d'une migration | 25 | |
36 | // tester si le site est "vide" et prévoir un formulaire permettant d'upload le fichier .zip | 26 | // dans le cas de l'utilisation d'une base de données, le fichiers zip devrait contenir un "dump" (un fichier .sql), |
37 | // contenant toutes les données qu'il est possible de créer depuis le mode admin | 27 | // à voir si php est capable d'obtenir ou redonner ce fichier à la BDD |
38 | // cette méthode a deux intérêts: | ||
39 | // - facilité pour l'utilisateur | ||
40 | // - toutes les données sont la "possession" du serveur apache, | ||
41 | // on prévient ainsi tous les futurs problèmes de droits | ||
42 | |||
43 | // dans le cas de l'utilisation d'une base de données, le fichiers zip devrait contenir un "dump" | ||
44 | // (un fichier .sql), à voir si php est capable d'obtenir ou redonner ce fichier à la BDD | ||
45 | 28 | ||
46 | // créer les dossiers (fait également à l'extraction du zip de données) | ||
47 | // attention: ne fonctionne pas sans une manipulation préalable | ||
48 | // - modifier soit-même les droits du dossier data pour 777 | ||
49 | // - modifier ceux du dossier parent (nom du site) avec son client FTP à la mise en ligne chez l'hébergeur et ensuite remettre tout comme avant | ||
50 | 29 | ||
51 | // création des dossiers | 30 | // création des dossiers |
31 | // attention: ne fonctionne pas sans une manipulation préalable | ||
32 | // - créer le dossier data à la racine du site | ||
33 | // - lui donner les droits du dossier data pour 777 | ||
52 | 34 | ||
53 | // valeur en octal | 35 | // valeur en octal |
54 | $droitsDossiers = 0777; // mettre 0755 en production | 36 | $droitsDossiers = 0777; // mettre 0755 en production |
@@ -61,22 +43,13 @@ function installation() | |||
61 | require('view/backup.php'); | 43 | require('view/backup.php'); |
62 | exit(); | 44 | exit(); |
63 | } | 45 | } |
64 | if(!touch('data')) | 46 | if(!touch('data')) // test autorisation en écriture |
65 | { | 47 | { |
66 | $erreur = 'data'; | 48 | $erreur = 'data'; |
67 | $title = 'Écriture non autorisée dans le dossier data'; | 49 | $title = 'Écriture non autorisée dans le dossier data'; |
68 | require('view/backup.php'); | 50 | require('view/backup.php'); |
69 | exit(); | 51 | exit(); |
70 | } | 52 | } |
71 | |||
72 | function createIndexPHP($path, $droitsFichiers) | ||
73 | { | ||
74 | $content = "<?php\nheader('Location: ../index.php');\nexit();"; | ||
75 | $file = fopen($path, 'w'); | ||
76 | fputs($file, $content); | ||
77 | fclose($file); | ||
78 | chmod($path, $droitsFichiers); | ||
79 | } | ||
80 | 53 | ||
81 | if(!file_exists('data/index.php')) | 54 | if(!file_exists('data/index.php')) |
82 | { | 55 | { |
@@ -113,6 +86,15 @@ function installation() | |||
113 | { | 86 | { |
114 | createIndexPHP('data/' . $page . '/images/index.php', $droitsFichiers); | 87 | createIndexPHP('data/' . $page . '/images/index.php', $droitsFichiers); |
115 | } | 88 | } |
89 | if(!file_exists('data/' . $page . '/images-mini')) | ||
90 | { | ||
91 | mkdir('data/' . $page . '/images-mini'); | ||
92 | chmod('data/' . $page . '/images-mini', $droitsDossiers); | ||
93 | } | ||
94 | if(!file_exists('data/' . $page . '/images-mini/index.html')) | ||
95 | { | ||
96 | createIndexPHP('data/' . $page . '/images-mini/index.php', $droitsFichiers); | ||
97 | } | ||
116 | // if(!file_exists('data/' . $page . '/multimedia')) | 98 | // if(!file_exists('data/' . $page . '/multimedia')) |
117 | // { | 99 | // { |
118 | // mkdir('data/' . $page . '/multimedia'); | 100 | // mkdir('data/' . $page . '/multimedia'); |
@@ -129,15 +111,6 @@ function installation() | |||
129 | { | 111 | { |
130 | createIndexPHP('data/discographie/json/index.php', $droitsFichiers); | 112 | createIndexPHP('data/discographie/json/index.php', $droitsFichiers); |
131 | } | 113 | } |
132 | if(!file_exists('data/discographie/images-mini')) | ||
133 | { | ||
134 | mkdir('data/discographie/images-mini'); | ||
135 | chmod('data/discographie/images-mini', $droitsDossiers); | ||
136 | } | ||
137 | if(!file_exists('data/discographie/images-mini/index.html')) | ||
138 | { | ||
139 | createIndexPHP('data/discographie/images-mini/index.php', $droitsFichiers); | ||
140 | } | ||
141 | // fichiers temporaires pour upload des grosses archives | 114 | // fichiers temporaires pour upload des grosses archives |
142 | if(!file_exists('data/tmp')) | 115 | if(!file_exists('data/tmp')) |
143 | { | 116 | { |
@@ -160,3 +133,12 @@ function installation() | |||
160 | // création d'un mot de passe si password.txt est vide | 133 | // création d'un mot de passe si password.txt est vide |
161 | createPassword(); | 134 | createPassword(); |
162 | } | 135 | } |
136 | |||
137 | function createIndexPHP($path, $droitsFichiers) | ||
138 | { | ||
139 | $content = "<?php\nheader('Location: ../index.php');\nexit();"; | ||
140 | $file = fopen($path, 'w'); | ||
141 | fputs($file, $content); | ||
142 | fclose($file); | ||
143 | chmod($path, $droitsFichiers); | ||
144 | } | ||