Bonjour,
j'ai écris une petite classe contenant 3 variables. (deux qui seront écrites dans un fichier et la dernière qui contient l'adresse du fichier à lire/écrire)
j'ai fait une fonction pour lire le fichier et une pr l'écriture du fichier.
Je ne comprend pas le fait que j'arrive systématiquement dans le else du fopen. (j'ai tenté de ne pas vérifier si fopen avait une erreur mais ca marche pas non plus).
Pourriez-vous m'aider???
j'emploie un simple fichier test pour le moment dont voici le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 //includes/databasemanagement.php define("FILE_NAME","sql/config.ini"); class DatabaseManager{ var $database_name; var $fn; var $dsn; function DatabaseManager(){ $database_name = ""; $dsn = ""; $fn = FILE_NAME; } function readConfigFile(){ if($fd=fopen($fn,"r")){ $config = parse_ini_file(FILE_NAME); if(!isset($config["db_name"]) || !isset($config["db_host_dsn"])){ fclose($fd); header("Location: config.php?error=config_not_formated"); exit; } $this->database_name = $config["db_name"]; $this->dsn = $config["db_host_dsn"]; }else{ header("Location: config.php?error=config_not_found"); exit; } } function writeConfigFile(){ if($fd=fopen($fn,"w+")){ $dbnconf = 'db_name = '.$this->database_name.'\n'; $dsnconf = 'db_host_dsn = '.$this->dsn.'\n'; if(!fwrite($fd,$dbnconf)){ fclose($fd); header("Location: config.php?error=config_not_writable&cause=1"); exit; } if(!fwrite($fd,$dbnconf)){ fclose($fd); header("Location: config.php?error=config_not_writable&cause=2"); exit; } }else{ header("Location: config.php?error=config_not_writable&cause=3"); exit; } } }
ps: j'ai mis des droits complets dans mon répertoire d'install de mes scripts.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 //test.php include 'includes/databasemanager.php'; $cm = new DatabaseManager(); $cm->database_name = "table"; $cm->dsn = "localhost"; $cm->writeConfigFile(); $cm->readConfigFile(); echo 'db = '.$cm->database_name.'<br/>dsn = '.$cm->dsn.' fn = '.$cm->fn.'</body></html>';
dans le cas où je fais un fopen et un fwrite dans mon script test, ca fonctionne parfaitement. Est-ce que c'est celà le problème???
Partager