Bien le bonjour,
décidément aujourd'hui je ne rencontre que des soucis avec php
En effet, j'essaye d’éditer un fichier grâce à une boucle foreach un objet SplFileObject.
Le hic c'est que cette boucle me lit qu'une ligne sur deux au lieu de lire toutes les lignes.
Je me suis dit que c’était mon fichier qui était mal formaté, j'ai donc décider de faire un script qui vas écrire puis lire le dit fichier et là oh magie, j'ai le même souci.
En effet, bien que le fichier soit écrit correctement, je ne parviens à lire qu'une ligne sur deux, et encore, quand je met le flag setFlags(SplFileObject::SKIP_EMPTY);
sinon j'ai mes lignes (toujours une sur deux) et un beau runtime exception qui me remonte seulement le fait que php ne parvient pas à lire le fichier alors qu'il m'écrit bien mes lignes précédentes
Bref, si vous avez une idée, voici le code (on sait jamais).
Lecture du fichier:
Ecriture du fichier:
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 <?php // - READ_TEMPLATE_USER_CONFIG - // $user_config_template = '/home/users_config/template'; function template($user_config_template){ $user_config = '/home/users_config/'; $login = 'template'; switch (is_readable($user_config_template)) { case true: try{ $user_config_file = new SplFileObject($user_config.$login,"r"); $user_config_file->setFlags(SplFileObject::SKIP_EMPTY); }catch(RuntimeException $error){ echo 'Exception Runtime Reçue: ', $error->getCode(), "\n"; } foreach($user_config_file as $line){ $current_line = $user_config_file->fgets(); echo("$current_line"."<br />"); } break; case false: echo "this file is not readable: $user_config_template"."<br />"; break; } } template($user_config_template); ?>
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 <?php // - WRITE_TEMPLATE_USER_CONFIG - // $user_config_template = '/home/users_config/template'; function template($user_config_template){ $config_template = 'anonymous_enable=NO'."\n"; $config_template .= 'anon_mkdir_write_enable=NO'."\n"; $config_template .= 'anon_other_write_enable=NO'."\n"; $config_template .= 'anon_upload_enable=NO'."\n"; $config_template .= 'write_enable=NO'."\n"; $config_template .= 'dirlist_enable=YES'."\n"; $config_template .= 'download_enable=YES'."\n"; $config_template .= 'local_root=/home/users_home'."\n"; $config_template .= 'virtual_use_local_privs=YES'."\n"; $config_template .= 'local_umask=022'."\n"; $user_config = '/home/users_config/'; $login = 'template'; try{ $user_config_file = new SplFileObject($user_config.$login,"c"); $user_config_file->setFlags(SplFileObject::SKIP_EMPTY); $user_config_file->fwrite($config_template); }catch(RuntimeException $error){ echo 'Exception Runtime Reçue: ', $error->getCode(), "\n"; } } template($user_config_template); ?>
Partager