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
|
<?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
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();
}
$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 . '/html'))
{
mkdir('data/' . $page . '/html');
chmod('data/' . $page . '/html', $droitsDossiers);
}
if(!file_exists('data/' . $page . '/images'))
{
mkdir('data/' . $page . '/images');
chmod('data/' . $page . '/images', $droitsDossiers);
}
// 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/images-mini'))
{
mkdir('data/discographie/images-mini');
chmod('data/discographie/images-mini', $droitsDossiers);
}
// créer le melainePHP.zip
if(!file_exists("data/melainePHP.zip"))
{
require('controller/backup.php');
creerMelainePHP();
}
// le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers
// création d'un mot de passe si password.txt est vide
createPassword();
}
|