1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
<?php
// premier démarrage du site
function installation()
{
// les chemins dans le .htaccess seront des chemins relatifs,
// la racine dépendant du serveur, donc de l'hébergeur,
// par défaut c'est /var/www/ pour debian, etc
// c'est /var/www/nom_de_domaine/ avec des hôtes virtuels
// on utilisera donc des chemins adaptés à des hôtes virtuels
// le nom du serveur sera le nom de domaine tout court
// la racine sera /var/www/nom_de_domaine
//echo('document root: ' . $_SERVER['DOCUMENT_ROOT'] . '<br />');
//echo('server name: ' . $_SERVER['SERVER_NAME'] . '<br /');
// echo('getcwd: ' . getcwd() . '<br />');
// echo('dirname: ' . dirname(__FILE__) . '<br />');
// echo('file: ' . __FILE__ . '<br />');
// echo('dir: ' . __DIR__. '<br />');
//$lien_htaccess = $_SERVER['SERVER_NAME'] . "/.htaccess";
//$nomDuSite = "melaine";
// créer le .htaccess
if(!file_exists(".htaccess"))
{
echo('<p style="color: red;" >Le .htaccess semble absent ce qui rend le site vulnérable, veuillez contacter l\'administrateur.</p>');
//$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";
// $fichier = fopen('.htaccess', 'w');
// fputs($fichier, $contenu);
// fclose($fichier);
// chmod('.htaccess', 0666); // mettre 0644 en production
}
// droits en lecture et écriture dans le cas d'une migration
// tester si le site est "vide" et prévoir un formulaire permettant d'upload le fichier .zip
// contenant toutes les données qu'il est possible de créer depuis le mode admin
// cette méthode a deux intérêts:
// - facilité pour l'utilisateur
// - toutes les données sont la "possession" du serveur apache,
// on prévient ainsi tous les futurs problèmes de droits
// dans le cas de l'utilisation d'une base de données, le fichiers zip devrait contenir un "dump"
// (un fichier .sql), à voir si php est capable d'obtenir ou redonner ce fichier à la BDD
// créer les dossiers (fait également à l'extraction du zip de données)
// attention: ne fonctionne pas sans une manipulation préalable
// - modifier soit-même les droits du dossier data pour 777
// - 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
// création des dossiers
// valeur en octal
$droitsDossiers = 0777; // mettre 0755 en production
$droitsFichiers = 0666;
if(!file_exists('data') && !mkdir('data'))
{
$erreur = 'data';
$title = 'Dossier data absent';
require('view/backup.php');
exit();
}
if(!touch('data'))
{
$erreur = 'data';
$title = 'Écriture non autorisée dans le dossier data';
require('view/backup.php');
exit();
}
touch('data/index.html');
chmod('data/index.html', $droitsFichiers);
$listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives');
foreach ($listePages as $page)
{
if(!file_exists('data/' . $page))
{
mkdir('data/' . $page);
chmod('data/' . $page, $droitsDossiers);
}
if(!file_exists('data/' . $page . 'index.html'))
{
touch('data/' . $page . '/index.html');
chmod('data/' . $page . '/index.html', $droitsFichiers);
}
if(!file_exists('data/' . $page . '/html'))
{
mkdir('data/' . $page . '/html');
chmod('data/' . $page . '/html', $droitsDossiers);
}
if(!file_exists('data/' . $page . '/html/index.html'))
{
touch('data/' . $page . '/html/index.html');
chmod('data/' . $page . '/html/index.html', $droitsFichiers);
}
if(!file_exists('data/' . $page . '/images'))
{
mkdir('data/' . $page . '/images');
chmod('data/' . $page . '/images', $droitsDossiers);
}
if(!file_exists('data/' . $page . '/images/index.html'))
{
touch('data/' . $page . '/images/index.html');
chmod('data/' . $page . '/images/index.html', $droitsFichiers);
}
// if(!file_exists('data/' . $page . '/multimedia'))
// {
// mkdir('data/' . $page . '/multimedia');
// chmod('data/' . $page . '/multimedia', 0777);
// }
}
// dossiers supplémentaires dans discographie
if(!file_exists('data/discographie/json'))
{
mkdir('data/discographie/json');
chmod('data/discographie/json', $droitsDossiers);
}
if(!file_exists('data/discographie/json/index.html'))
{
touch('data/discographie/json/index.html');
chmod('data/discographie/json/index.html', $droitsFichiers);
}
if(!file_exists('data/discographie/images-mini'))
{
mkdir('data/discographie/images-mini');
chmod('data/discographie/images-mini', $droitsDossiers);
}
if(!file_exists('data/discographie/images-mini/index.html'))
{
touch('data/discographie/images-mini/index.html');
chmod('data/discographie/images-mini/index.html', $droitsFichiers);
}
// le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers
// créer le melainePHP.zip
if(!file_exists("data/melainePHP.zip"))
{
require('controller/backup.php');
creerMelainePHP();
}
// création d'un mot de passe si password.txt est vide
createPassword();
}
|